[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Agora1-4/ -> inc-forum.php (source)

   1  <?php
   2  /*****************************************************
   3  * This file is part of Agora, web based content management system.
   4  *
   5  * Agora is free software; you can redistribute it and/or modify
   6  * it under the terms of the GNU General Public License as published by
   7  * the Free Software Foundation; version 2 of the License.
   8  *
   9  * Agora is distributed in the hope that it will be useful,
  10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  * GNU General Public License for more details (file "COPYING").
  13  *
  14  * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière.
  15  * List of authors detailed in "copyright_fr.html" file.
  16  * E-mail : agora@sig.premier-ministre.gouv.fr
  17  * Web site : http://www.agora.gouv.fr
  18  *****************************************************/
  19  // Ce fichier ne sera execute qu'une fois
  20  if (defined("_INC_FORUM"))
  21      return;
  22  
  23  define("_INC_FORUM", "1");
  24  
  25  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_article_factory.php");
  26  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_breve_factory.php");
  27  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_groupe_mot_factory.php");
  28  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_profil_factory.php");
  29  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_mot_factory.php");
  30  require_once (dirname(__FILE__). "/ecrire/include/bd/inc_forum_factory.php");
  31  
  32  include_once  ("ecrire/inc_meta.php");
  33  include_once  ("ecrire/inc_admin.php");
  34  include_once  ("ecrire/inc_acces.php");
  35  include_once  ("ecrire/inc_texte.php");
  36  include_once  ("ecrire/inc_filtres.php");
  37  include_once  ('ecrire/inc_lang.php'); // pour lang_select
  38  include_once  ("ecrire/inc_mail.php");
  39  include_once  ("ecrire/inc_barre.php");
  40  
  41  if (@file_exists("inc-urls.php")) {
  42      include_once ("inc-urls.php");
  43  }
  44  else {
  45      include_local ("inc-urls-dist.php");
  46  }
  47  
  48  // dupliquee dans ecrire/articles.php ; mais je ne sais pas ou l'installer (Fil)...
  49  function get_forums_publics ($id_article = 0) {
  50      $forums_publics = lire_meta("forums_publics");
  51  
  52      if ($id_article) {
  53          $articleMetier = &recuperer_instance_article();
  54          $loadOK = $articleMetier->loadLightWeight($id_article);
  55          if (PEAR::isError($loadOK)) {
  56              die ($loadOK->getMessage());
  57          }
  58          else {
  59              $forums_publics = $articleMetier->getAccepterForum();
  60          }
  61      }
  62      else {
  63          $forums_publics = lire_meta("forums_publics");
  64      }
  65  
  66      return $forums_publics;
  67  }
  68  
  69  function afficher_petits_logos_mots ($id_mot) {
  70      $racine = "IMG/moton$id_mot";
  71  
  72      if (@file_exists("$racine.gif")) {
  73          $image = "$racine.gif";
  74      }
  75      elseif (@file_exists("$racine.jpg")) {
  76          $image = "$racine.jpg";
  77      }
  78      elseif (@file_exists("$racine.png")) {
  79          $image = "$racine.png";
  80      }
  81  
  82      if ($image) {
  83          $taille = getimagesize($image);
  84          $largeur = $taille[0];
  85          $hauteur = $taille[1];
  86          if ($largeur < 100 AND $hauteur < 100)
  87              return "<IMG SRC='$image' align='middle' WIDTH='$largeur' HEIGHT='$hauteur' HSPACE='1' VSPACE='1' ALT=' ' BORDER=0 class='spip_image'> ";
  88          else
  89              return "";
  90      }
  91      else {
  92          return "";
  93      }
  94  }
  95  
  96  function decoder_hash_forum ($email, $hash) {
  97      if (!$email OR !$hash)
  98          return false;
  99  
 100      //-----------Zone de modification Clever Age elebescond---------------
 101      $auteurMetier = &recuperer_instance_auteur();
 102      $allAuteurs = $auteurMetier->getAllForEmail($email);
 103  
 104      if (PEAR::isError($allAuteurs)) {
 105          die ($allAuteurs->getMessage());
 106      }
 107  
 108      while (list(, $auteurMetier) = each($allAuteurs)) {
 109          if (verifier_action_auteur("forum public $email", $hash, $auteurMetier->getAuteurId())) {
 110              $ok = true;
 111              break;
 112          }
 113      }
 114  
 115      if ($ok)
 116          return $row;
 117      else
 118          return false;
 119  }
 120  
 121  function forum_abonnement ($retour) {
 122      if ($GLOBALS['auteur_session'])
 123          return true; // autoriser le formulaire
 124      else {
 125          include_local ("inc-login.php");
 126  
 127          $message_login = _T('forum_vous_enregistrer'). '<a href="spip_pass.php" target="spip_pass" title="' . _T('forum_vous_enregistrer'). '" onclick="' . "javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=450'); return false;\">" . _T('forum_vous_inscrire'). "<br>\n";
 128          login('', false, $message_login);
 129          return false;
 130      }
 131  }
 132  
 133  //
 134  // Afficher le formulaire d'edition de forum en fonction du contexte
 135  //
 136  
 137  function retour_forum ($id_rubrique, $id_parent, $id_article, $id_breve, $id_syndic, $titre = '') {
 138      global $REQUEST_URI, $HTTP_GET_VARS, $PATH_TRANSLATED, $REMOTE_ADDR, $id_message;
 139      global $new, $redac, $afficher_groupe, $afficher_texte;
 140      global $spip_forum_user;
 141  
 142      /* Ajout  S.PETIT */
 143      if ($id_rubrique < 0)
 144          $id_rubrique = 0;
 145  
 146      if ($id_parent < 0)
 147          $id_parent = 0;
 148  
 149      if ($id_article < 0)
 150          $id_article = 0;
 151  
 152      if ($id_breve < 0)
 153          $id_breve = 0;
 154  
 155      if ($id_syndic < 0)
 156          $id_syndic = 0;
 157      /* fin zone d'ajout S.PETIT */
 158  
 159      $forums_publics = get_forums_publics($id_article);
 160  
 161      if ($forums_publics == "non")
 162          return;
 163  
 164      $lien = substr($REQUEST_URI, strrpos($REQUEST_URI, '/') + 1);
 165  
 166      $retour = $HTTP_GET_VARS['retour'];
 167  
 168      if (!$retour)
 169          $retour = rawurlencode($lien);
 170  
 171      /**************** Modification elebescond@clever-age.com *************/
 172      if (($forums_publics == 'abo_priori') || ($forums_publics == 'abo_posteriori')) {
 173          if (!forum_abonnement($retour))
 174              return;
 175      }
 176      /*
 177      if ($forums_publics == 'abo') {
 178          if (!forum_abonnement($retour)) return;
 179      }
 180      */
 181      /**************** Fin modification elebescond@clever-age.com *************/
 182  
 183      $ret .= "\n<a name='formulaire_forum'></a>\n";
 184  
 185      /**************** Modification elebescond@clever-age.com *************/
 186      if (($forums_publics == 'priori')) {
 187          $ret .= _T('forum_info_modere'). "<p>";
 188      }
 189      /*
 190      if ($forums_publics == "pri") {
 191          $ret.= _T('forum_info_modere')."<p>";
 192      }
 193      */
 194      /**************** Fin modification elebescond@clever-age.com *************/
 195  
 196      // Recuperer le message a previsualiser    
 197      if ($id_message = intval($id_message)) {
 198          //----------Modification Clever Age elebescond@clever-age.com-----------------
 199          $forumMetier = &recuperer_instance_forum();
 200          $loadOK = $forumMetier->load($id_message);
 201  
 202          if (PEAR::isError($loadOK)) {
 203              die ($loadOK->getMessage());
 204          }
 205          else {
 206              if ($forumMetier->getIp() == "$REMOTE_ADDR") {
 207                  $titre = $forumMetier->getTitre();
 208                  $texte = $forumMetier->getTexte();
 209                  $auteur = $forumMetier->getAuteur();
 210                  $email_auteur = $forumMetier->getEmailAuteur();
 211                  $nom_site_forum = $forumMetier->getNomSite();
 212                  $url_site = $forumMetier->getUrlSite();
 213              }
 214          }
 215  
 216          if ($afficher_texte != 'non') {
 217              $ret .= "<div class='spip_encadrer'>";
 218  
 219              if ($afficher_texte != "non") {
 220                  $ret .= "<div style='font-size: 120%; font-weigth: bold;'>" . typo($titre). "</div>";
 221                  $ret .= "<p /><strong><a href='mailto:" . entites_html($email_auteur). "' title='" . _T('ecrire'). "'>" . typo($auteur). "</a></strong>";
 222                  $ret .= "<p />" . propre($texte). "<p />";
 223              }
 224  
 225              $ret .= "<a href='" . entites_html($url_site). "' title='" . _T('visiter'). "'>" . typo($nom_site_forum). "</a>";
 226  
 227              // Verifier mots associes au message
 228              $motMetier = &recuperer_instance_mot();
 229              $allMots = $motMetier->getAllForForumId($id_message);
 230  
 231              if (PEAR::isError($allMots)) {
 232                  die ($allMots->getMessage());
 233              }
 234  
 235              if (sizeOf($allMots) > 0)
 236                  $ret .= "<p>" . _T('forum_avez_selectionne');
 237  
 238              while (list(, $motMetier) = each($allMots)) {
 239                  $id_mot = $motMetier->getMotId();
 240                  $type_mot = $motMetier->getType();
 241                  $titre_mot = $motMetier->getTitre();
 242                  $les_mots[$id_mot] = true;
 243                  $presence_mots = true;
 244  
 245                  $ret .= "<li> $type_mot&nbsp;: <strong>$titre_mot</strong>";
 246              }
 247  
 248              $ret .= "\n<form action='$lien' name='formulaire' method='post'>";
 249  
 250              if (strlen($texte) < 10 AND !$presence_mots) {
 251                  $ret .= "<div class='erreur_forum'>" . _T('forum_attention_dix_caracteres'). "</div>\n";
 252              }
 253              else if (strlen($titre) < 3 AND $afficher_texte <> "non") {
 254                  $ret .= "<div class='erreur_forum'>" . _T('forum_attention_trois_caracteres'). "</div>\n";
 255              }
 256              else {
 257                  $ret .= "\n<div class='bouton_forum'><input type='submit' name='confirmer' class='spip_bouton' value='" . _T('forum_message_definitif'). "' /></div>";
 258              }
 259              $ret .= "</div>\n<br />";
 260          }
 261      }
 262      else {
 263          // Si premiere edition, initialiser le titre et l'auteur
 264  
 265          if (!$titre) {
 266              /**************** Modification elebescond@clever-age.com *************/
 267              if ($id_parent) {
 268                  $forumMetier = &recuperer_instance_forum();
 269                  $loadOK = $forumMetier->load($id_parent);
 270  
 271                  if (PEAR::isError($loadOK)) {
 272                      die ($loadOK->getMessage());
 273                  }
 274                  $titre = '> ' . ereg_replace('^[>[:space:]]*', '', $forumMetier->getTitre());
 275              }
 276              else if ($id_rubrique) {
 277                  $rubriqueMetier = &recuperer_instance_rubrique();
 278                  $loadOK = $rubriqueMetier->load($id_rubrique);
 279  
 280                  if (PEAR::isError($loadOK)) {
 281                      die ($loadOK->getMessage());
 282                  }
 283                  $titre = '> ' . ereg_replace('^[>[:space:]]*', '', $rubriqueMetier->getTitre());
 284              }
 285              else if ($id_article) {
 286                  $articleMetier = &recuperer_instance_article();
 287                  $loadOK = $articleMetier->load($id_article);
 288  
 289                  if (PEAR::isError($loadOK)) {
 290                      die ($loadOK->getMessage());
 291                  }
 292                  $titre = '> ' . ereg_replace('^[>[:space:]]*', '', $articleMetier->getTitre());
 293              }
 294              else if ($id_breve) {
 295                  $breveMetier = &recuperer_instance_breve();
 296                  $loadOK = $breveMetier->load($id_breve);
 297  
 298                  if (PEAR::isError($loadOK)) {
 299                      die ($loadOK->getMessage());
 300                  }
 301                  $titre = '> ' . ereg_replace('^[>[:space:]]*', '', $breveMetier->getTitre());
 302              }
 303              else if ($id_syndic) {
 304                  $syndicMetier = &recuperer_instance_syndic();
 305                  $loadOK = $syndicMetier->load($id_syndic);
 306  
 307                  if (PEAR::isError($loadOK)) {
 308                      die ($loadOK->getMessage());
 309                  }
 310                  $titre = '> ' . ereg_replace('^[>[:space:]]*', '', $syndicMetier->getTitre());
 311              }
 312              else
 313                  $titre_select = addslashes(_T('forum_titre_erreur'));
 314          }
 315  
 316          if ($spip_forum_user && is_array($cookie_user = unserialize($spip_forum_user))) {
 317              $auteur = $cookie_user['nom'];
 318              $email_auteur = $cookie_user['email'];
 319          }
 320          else {
 321              $auteur = $GLOBALS['auteur_session']['nom'];
 322              $email_auteur = $GLOBALS['auteur_session']['email'];
 323          }
 324          $ret .= "\n<form action='$lien' name='formulaire' method='post'>";
 325      }
 326  
 327      $ret .= "\n";
 328  
 329      // Generation d'une valeur de securite pour validation
 330      $seed = (double)(microtime() + 1) * time() * 1000000;
 331      @mt_srand ($seed);
 332      $alea = @mt_rand();
 333  
 334      if (!$alea) {
 335          srand ($seed);
 336          $alea = rand();
 337      }
 338  
 339      $id_rubrique = intval($id_rubrique);
 340      $id_parent = intval($id_parent);
 341      $id_article = intval($id_article);
 342      $id_breve = intval($id_breve);
 343      $id_syndic = intval($id_syndic);
 344      $hash = calculer_action_auteur("ajout_forum $id_rubrique $id_parent $id_article $id_breve $id_syndic $alea");
 345  
 346      // Afficher le formulaire d'edition
 347      $titre = entites_html($titre);
 348      $texte = entites_html($texte);
 349  
 350      if ($afficher_texte == "non") {
 351          $ret .= "\n<input type='hidden' name='titre' VALUE=\"$titre\" />";
 352      }
 353      else {
 354          $ret .= "<fieldset>";
 355          $ret .= "<legend class='spip_form_legend'>" . _T('form_message_forum'). "</legend>";
 356          $ret .= "\n<label for=\"titre\"><strong>" . _T('forum_titre'). "</strong></label><br />";
 357          $ret .= "\n&nbsp;<input type='text' class='forml' name='titre' id='titre' value=\"$titre\" size='40' />";
 358      }
 359  
 360      $ret .= "\n<input type='hidden' name='id_message' value=\"$id_message\" />";
 361      $ret .= "\n<input type='hidden' name='ajout_forum' value=\"oui\" />";
 362      $ret .= "\n<input type='hidden' name='forum_id_rubrique' value=\"$id_rubrique\" />";
 363      $ret .= "\n<input type='hidden' name='forum_id_parent' value=\"$id_parent\" />";
 364      $ret .= "\n<input type='hidden' name='forum_id_article' value=\"$id_article\" />";
 365      $ret .= "\n<input type='hidden' name='forum_id_breve' value=\"$id_breve\" />";
 366      $ret .= "\n<input type='hidden' name='forum_id_syndic' value=\"$id_syndic\" />";
 367      $ret .= "\n<input type='hidden' name='alea' value=\"$alea\" />";
 368      $ret .= "\n<input type='hidden' name='hash' value=\"$hash\" />";
 369      $ret .= "\n<input type='hidden' name='retour_forum' value=\"$retour\" />";
 370      $ret .= "\n<input type='hidden' name='alerte_email_stop' value=\"oui\" />";
 371  
 372      if ($new != "oui" AND $redac != "oui")
 373          $ret .= "\n<input type='hidden' name='new' value=\"oui\" />";
 374  
 375      if ($new == "oui")
 376          $ret .= "\n<input type='hidden' name='redac' value=\"oui\" />";
 377  
 378      if ($afficher_texte != "non") {
 379          $ret .= "\n<div class='spip_encadrer'><label for=\"texte\"><strong>" . _T('forum_texte'). "</strong></label>\n";
 380          $ret .= _T('forum_creer_paragraphes');
 381          //$ret .= "<br />\n";
 382          //$ret .= afficher_barre('formulaire', 'texte', true);
 383          $ret .= "<textarea name='texte' id='texte' rows='12' class='forml' cols='40'>";
 384          $ret .= $texte;
 385          $ret .= "\n</textarea></div>\n";
 386          $ret .= "</fieldset>";
 387      }
 388  
 389      // Gestion des mots-cles
 390  
 391      $mots_cles_forums = lire_meta("mots_cles_forums");
 392  
 393      if ($mots_cles_forums == "oui") {
 394          if ($id_rubrique > 0)
 395              $table = "rubriques";
 396          else if ($id_article > 0)
 397              $table = "articles";
 398          else if ($id_breve > 0)
 399              $table = "breves";
 400          else if ($id_syndic > 0)
 401              $table = "syndic";
 402  
 403          if ($afficher_groupe) {
 404              $afficher_groupe = join($afficher_groupe, ",");
 405              $selectionner_groupe = "AND id_groupe IN ($afficher_groupe)";
 406          }
 407          if ($table) {
 408              //-----------Zone de modification Clever Age elebescond---------------
 409              $groupeMotMetier = &recuperer_instance_groupe_mot();
 410              $allGroupeMot = $groupeMotMetier->getAllForforumAndTableAndGroupId("'oui'", $table, $selectionner_groupe);
 411  
 412              if (PEAR::isError($allGroupeMot)) {
 413                  die ($allGroupeMot->getMessage());
 414              }
 415              while (list(, $groupeMotMetier) = each($allGroupeMot)) {
 416                  $id_groupe = $groupeMotMetier->getGroupeId();
 417                  $titre_groupe = $groupeMotMetier->getTitre();
 418                  $unseul_groupe = $groupeMotMetier->getUnSeul();
 419  
 420                  $motMetier = &recuperer_instance_mot();
 421                  $allMot = $motMetier->getAllForGroupIdAndMotId($id_groupe);
 422  
 423                  if (PEAR::isError($allMot)) {
 424                      die ($allMot->getMessage());
 425                  }
 426  
 427                  $total_rows = sizeOf($allMot);
 428                  if ($total_rows > 0) {
 429                      $ret .= "\n<p><div class='spip_encadrer'>";
 430                      $ret .= "<strong>$titre_groupe&nbsp;:</strong>";
 431  
 432                      //$ret .= "<table cellpadding=0 cellspacing=0 border=0 width='100%'>\n";
 433                      //$ret .= "<tr><td width='47%' valign='top'><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
 434                      $i = 0;
 435                      $ret .= "<fieldset>";
 436                      $ret .= "<legend class='spip_form_legend'>" . _T('form_message_forum_mot_cle'). "</legend>";
 437  
 438                      while (list(, $motMetier) = each($allMot)) {
 439                          $id_mot = $motMetier->getMotId();
 440                          $titre_mot = propre($motMetier->getTitre());
 441                          $type_mot = propre($motMetier->getType());
 442                          $descriptif_mot = $motMetier->getDescriptif();
 443  
 444                          if ($i >= ($total_rows / 2)AND $i < $total_rows) {
 445                              $i = $total_rows + 1;
 446                              //$ret .= "</font></td><td width='6%'>&nbsp;</td><td width='47%' valign='top'><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
 447                              $ret .= "</font><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
 448                          }
 449  
 450                          if ($les_mots[$id_mot])
 451                              $checked = "checked";
 452                          else
 453                              $checked = "";
 454  
 455                          if ($unseul_groupe == 'oui') {
 456                              $ret .= "<input type='radio' name='ajouter_mot[$id_groupe][]' value='$id_mot' $checked id='mot$id_mot' /> ";
 457                          }
 458                          else {
 459                              $ret .= "<input type='checkbox' name='ajouter_mot[$id_groupe][]' value='$id_mot' $checked id='mot$id_mot' /> ";
 460                          }
 461  
 462                          $ret .= afficher_petits_logos_mots($id_mot);
 463                          $ret .= "<strong><label for='mot$id_mot'>$titre_mot</label></strong><br>";
 464  
 465                          if (strlen($descriptif_mot) > 0)
 466                              $ret .= "$descriptif_mot<br>";
 467                          $i++;
 468                      }
 469  
 470                      //$ret .= "</font></td></tr></table>";
 471                      $ret .= "</font>";
 472                      $ret .= "</fieldset>";
 473                      $ret .= "</div>";
 474                  }
 475              }
 476          }
 477      }
 478  
 479      // Edition du texte du forum
 480      if ($afficher_texte != "non") {
 481          $ret .= "\n<br /><div class='spip_encadrer'>" . _T('forum_lien_hyper'). "<br />\n";
 482          $ret .= _T('forum_page_url');
 483          $ret .= "<br />\n<label for=\"nom_site_forum\">" . _T('forum_titre'). "</label>";
 484          $ret .= "<br />\n<input type='text' class='forml' name='nom_site_forum' id='nom_site_forum' value=\"" . entites_html($nom_site_forum). "\" size='40' /><br />";
 485  
 486          if (!$url_site)
 487              $url_site = "http://";
 488  
 489          $ret .= "<br />\n<label for=\"url_site\">" . _T('forum_url'). "</label>";
 490          $ret .= "<br />\n<input type='text' class='forml' name='url_site' id='url_site' value=\"" . entites_html($url_site). "\" size='40' /></div>";
 491  
 492          $ret .= "\n<br /><div class='spip_encadrer'>" . _T('forum_qui_etes_vous'). "<br />";
 493  
 494          if (($forums_publics == "abo_priori") || ($forums_publics == "abo_posteriori"))
 495              $disabled = ' disabled="disabled"';
 496  
 497          $ret .= "<br />\n<label for=\"auteur\">" . _T('forum_votre_nom'). "</label>";
 498          $ret .= "<br />\n<input type='text' class='forml' name='auteur' id='auteur' value=\"" . entites_html($auteur). "\" size='40'$disabled /><br />\n";
 499  
 500          $ret .= "<br />\n<label for=\"email_auteur\">" . _T('forum_votre_email'). "</label>";
 501          $ret .= "<br />\n<input type='text' class='forml' name='email_auteur' id='email_auteur' value=\"" . entites_html($email_auteur). "\" size='40'$disabled /></div>";
 502      }
 503  
 504      global $alerte_email;
 505      global $alerte_email_init;
 506      global $alerte_email_stop;
 507  
 508      if ($alerte_email_init == 'oui' AND $alerte_email_stop == null) {
 509          $alerte_email = 'oui';
 510      }
 511  
 512      $ret .= "<fieldset>";
 513      $ret .= "<legend class='spip_form_legend'>" . _T('form_message_forum_alert'). "</legend>";
 514  
 515      if ($alerte_email == 'oui') {
 516          $ret .= "<br />\n<input type='checkbox' name='alerte_email' id='alerte_email' value=\"oui\" checked /><label for=\"alerte_email\">" . _T('demande_avertissement_mail'). "</label>";
 517      }
 518      else {
 519          $ret .= "<br />\n<input type='checkbox' name='alerte_email' id='alerte_email' value=\"oui\" /><label for=\"alerte_email\">" . _T('demande_avertissement_mail'). "</label>";
 520      }
 521  
 522      $ret .= "</fieldset>";
 523  
 524      // Bouton de validation
 525      if ($afficher_texte != "non")
 526          $ret .= "\n<br /><div class='bouton_forum'><input type='submit' name='Valider' class='spip_bouton' value='" . _T('forum_voir_avant'). "' /></div>";
 527      else
 528          $ret .= "\n<br /><div class='bouton_forum'><input type='submit' name='Valider' class='spip_bouton' value='" . _T('forum_valider'). "' /></div>";
 529  
 530      $ret .= "</form>";
 531  
 532      return $ret;
 533  }
 534  
 535  //
 536  // Fonction appelee a l'ajout d'un message
 537  // (previsualisation et validation finale)
 538  //
 539  
 540  function ajout_forum () {
 541      global $texte, $titre, $nom_site_forum, $url_site, $auteur, $email_auteur, $retour_forum, $id_message, $confirmer, $alerte_email;
 542      global $forum_id_rubrique, $forum_id_parent, $forum_id_article, $forum_id_breve, $forum_id_auteur, $forum_id_syndic, $alea, $hash;
 543      global $auteur_session;
 544      global $alerte_email;
 545      global $ajouter_mot, $new;
 546      global $REQUEST_URI, $HTTP_COOKIE_VARS, $REMOTE_ADDR;
 547      global $afficher_texte;
 548  
 549      if (!$GLOBALS['db_ok']) {
 550          die ("<h4>" . _T('forum_probleme_database'). "</h4>");
 551      }
 552  
 553      $id_message = intval($id_message);
 554      $retour_forum = rawurldecode($retour_forum);
 555      $forum_id_article = intval($forum_id_article);
 556      $forum_id_rubrique = intval($forum_id_rubrique);
 557      $forum_id_parent = intval($forum_id_parent);
 558      $forum_id_breve = intval($forum_id_breve);
 559      $forum_id_syndic = intval($forum_id_syndic);
 560  
 561      $forums_publics = get_forums_publics($forum_id_article);
 562      $validation_finale = (strlen($confirmer) > 0 OR ($afficher_texte == 'non' AND $ajouter_mot));
 563  
 564      // ne pas autoriser de changement de nom si le forum est sur abonnement    
 565      if ($forums_publics == "abo_priori" OR $forums_publics == "abo_posteriori") {
 566          if ($auteur_session) {
 567              $auteurMetier = &recuperer_instance_auteur();
 568              $loadOK = $auteurMetier->load($auteur_session['id_auteur']);
 569  
 570              if (PEAR::isError($loadOK)) {
 571                  die ($loadOK->getMessage());
 572              }
 573  
 574              $profilMetier = &recuperer_instance_profil();
 575              $monProfil = $profilMetier->getProfilForIntitule('texte_statut_poubelle');
 576              if (PEAR::isError($monProfil)OR ($auteurMetier->getProfil() == $monProfil->getPoids())) {
 577                  die ("<h4>" . _T('forum_acces_refuse'). "</h4>" . _T('forum_cliquer_retour', array('retour_forum' => $retour_forum)). "<p>");
 578              }
 579          }
 580          else {
 581              die ("<h4>" . _T('forum_non_inscrit'). "</h4>" . _T('forum_cliquer_retour', array('retour_forum' => $retour_forum)). "<p>");
 582          }
 583  
 584          // Ne pas autoriser de changement de nom si le forum est sur abonnement
 585          $auteur = $auteur_session['nom'];
 586          $email_auteur = $auteur_session['email'];
 587      }
 588  
 589      //----------Modification Clever Age elebescond@clever-age.com---------
 590      if ($validation_finale) {
 591          if (!verifier_action_auteur("ajout_forum $forum_id_rubrique $forum_id_parent $forum_id_article $forum_id_breve $forum_id_syndic $alea", $hash)) {
 592              /**************** Début ajout tbeaumanoir@clever-age.com ****************/
 593              if (!strstr($retour_forum, 'recalcul=oui')) {
 594                  if (!strstr($retour_forum, '?')) {
 595                      $retour_forum .= '?';
 596                  }
 597                  else {
 598                      $retour_forum .= '&';
 599                  }
 600                  $retour_forum .= 'recalcul=oui';
 601              }
 602              /**************** Fin ajout tbeaumanoir@clever-age.com ****************/
 603              @header ("Location: $retour_forum");
 604              exit;
 605          }
 606  
 607          if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
 608              die ("<h4>" . _T('forum_message_trop_long'). "</h4>\n" . _T('forum_cliquer_retour', array('retour_forum' => $retour_forum)). "<p>");
 609          }
 610  
 611          $forumMetier = &recuperer_instance_forum();
 612          $deleteFichierOK = $forumMetier->deleteFichier($forum_id_article, $forum_id_rubrique, $forum_id_breve, $forum_id_parent, "CACHE");
 613          if (PEAR::isError($deleteFichierOK)) {
 614              die ($deleteFichierOK->getMessage());
 615          }
 616      }
 617  
 618      switch ($forums_publics) {
 619          case "non":
 620              $etat = "off";
 621              break;
 622  
 623          case "priori":
 624              $etat = "prop";
 625              break;
 626  
 627          case "abo_priori":
 628              $etat = "prop";
 629              break;
 630  
 631          default:
 632              $etat = "publie";
 633              break;
 634      }
 635  
 636      if ($GLOBALS['auteur_session']['profil'] == null) {
 637          $profil = '';
 638      }
 639      else {
 640          $profil = $GLOBALS['auteur_session']['profil'];
 641      }
 642  
 643      if (!$id_auteur)
 644          $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
 645  
 646      if ($new == "oui") {
 647          $nouveau_document = true;
 648  
 649          if ($HTTP_GET_VARS['titre']) {
 650              $titre = "> " . rawurldecode($HTTP_GET_VARS['titre']);
 651          }
 652  
 653          //----------Modification Clever Age elebescond@clever-age.com-----------------
 654          $forumMetier = &recuperer_instance_forum();
 655          $forumMetier->setTitre($titre);
 656          $forumMetier->setIp($REMOTE_ADDR);
 657          $profilMetier = &recuperer_instance_profil();
 658          $monProfil = $profilMetier->getProfilForIntitule('item_administrateur');
 659          $monProfilNonAbonne = $profilMetier->getProfilForIntitule('item_non_abonne');
 660  
 661          if ($profil >= $monProfil->getPoids()) {
 662              $forumMetier->setStatut('publie');
 663          }
 664          else {
 665              $forumMetier->setStatut('redac');
 666          }
 667  
 668          if ($profil > 0) {
 669              $forumMetier->setProfilAuteur($profil);
 670          }
 671          else {
 672              $forumMetier->setProfilAuteur($monProfilNonAbonne->getPoids());
 673          }
 674          if ($forumMetier->isArchive($forum_id_article, $forum_id_rubrique)) {
 675              $createOK = $forumMetier->create();
 676              if (PEAR::isError($createOK)) {
 677                  die ($createOK->getMessage());
 678              }
 679              else {
 680                  $id_message = $forumMetier->getForumId();
 681              }
 682          }
 683      }
 684  
 685      // Ajouter les mots-cles
 686  
 687      //-----------Zone de modification Clever Age elebescond---------------
 688      $motMetier = &recuperer_instance_mot();
 689      $deleteOK = $motMetier->deleteMotTable('forum', 'id_forum', $id_message);
 690  
 691      if (PEAR::isError($deleteOK)) {
 692          die ($deleteOK->getMessage());
 693      }
 694  
 695      if ($ajouter_mot) {
 696          for (reset($ajouter_mot); $key = key($ajouter_mot); next($ajouter_mot)) {
 697              //--------Zone de modification elebescond@clever-age.com ----------------------
 698              $les_mots .= join(",", $ajouter_mot[$key]);
 699          }
 700  
 701          $les_mots = explode(",", $les_mots);
 702          for ($index = 0; $index < count($les_mots); $index++) {
 703              $le_mot = $les_mots[$index];
 704  
 705              if ($le_mot > 0)
 706                  $motMetier = &recuperer_instance_mot();
 707  
 708              $addMotOK = $motMetier->addMot("forum", "id_forum", $le_mot, $id_message);
 709              if (PEAR::isError($addMotOK)) {
 710                  die ($addMotOK->getMessage());
 711              }
 712          }
 713      }
 714  
 715      $forumMetier = &recuperer_instance_forum();
 716      $loadOK = $forumMetier->load($id_message);
 717  
 718      if (PEAR::isError($loadOK)) {
 719          die ($loadOK->getMessage());
 720      }
 721      else {
 722          $forumMetier->setParentId($forum_id_parent);
 723          $forumMetier->setRubriqueId($forum_id_rubrique);
 724          $forumMetier->setArticleId($forum_id_article);
 725          $forumMetier->setBreveId($forum_id_breve);
 726          $forumMetier->setSyndicId($forum_id_syndic);
 727          $forumMetier->setTitre($titre);
 728          $forumMetier->setTexte($texte);
 729          $forumMetier->setNomSite($nom_site_forum);
 730          $forumMetier->setUrlSite($url_site);
 731  
 732          if ($auteur == null)
 733              $forumMetier->setAuteur(_T('forum_anonymous'));
 734          else
 735              $forumMetier->setAuteur($auteur);
 736  
 737          $forumMetier->setEmailAuteur($email_auteur);
 738  
 739          if ($email_auteur == null)
 740              $forumMetier->setEmailAlerte('non');
 741          else
 742              $forumMetier->setEmailAlerte($alerte_email);
 743  
 744          $forumMetier->setIp($REMOTE_ADDR);
 745          $profilMetier = &recuperer_instance_profil();
 746          $monProfil = $profilMetier->getProfilForIntitule('item_administrateur');
 747  
 748          if ($profil >= $monProfil->getPoids()) {
 749              $forumMetier->setStatut('publie');
 750          }
 751          else {
 752              $forumMetier->setStatut('redac');
 753          }
 754  
 755          if ($id_auteur != null)
 756              $forumMetier->setAuteurId($id_auteur);
 757          else
 758              $forumMetier->setAuteurId(0);
 759  
 760          ;
 761          $updateOK = $forumMetier->update();
 762          if (PEAR::isError($updateOK)) {
 763              die ($updateOK->getMessage());
 764          }
 765      }
 766  
 767      if ($forums_publics == 'abo_priori' OR $forums_publics == 'abo_posteriori') {
 768          if ($auteur_session) {
 769              $statut = $auteur_session['statut'];
 770              $profil = $auteur_session['profil'];
 771              $profilMetier = &recuperer_instance_profil();
 772              $monProfil = $profilMetier->getProfilForIntitule('texte_statut_poubelle');
 773              if ($profil == $monProfil->getPoids()) {
 774                  die ("<h4>" . _T('forum_acces_refuse'). "</h4>" . _T('forum_cliquer_retour', array('retour_forum' => $retour_forum)). "<p>");
 775              }
 776          }
 777          else {
 778              die ("<h4>" . _T('forum_non_inscrit'). "</h4>" . _T('forum_cliquer_retour', array('retour_forum' => $retour_forum)). "<p>");
 779          }
 780      }
 781  
 782      if ($validation_finale) {
 783          //----------Modification Clever Age elebescond@clever-age.com-----------------
 784          $forumMetier = &recuperer_instance_forum();
 785          $loadOK = $forumMetier->load($id_message);
 786  
 787          if (PEAR::isError($loadOK)) {
 788              die ($loadOK->getMessage());
 789          }
 790          else {
 791              $profilMetier = &recuperer_instance_profil();
 792              $monProfil = $profilMetier->getProfilForIntitule('item_administrateur');
 793  
 794              if ($profil >= $monProfil->getPoids()) {
 795                  $forumMetier->setStatut('publie');
 796              }
 797              else {
 798                  $forumMetier->setStatut($etat);
 799              }
 800  
 801              $updateOK = $forumMetier->update();
 802  
 803              if (PEAR::isError($updateOK)) {
 804                  die ($updateOK->getMessage());
 805              }
 806  
 807              //envoie d'un mail d'avertissement �l'auteur du message pere
 808              if ($forumMetier->getParentId() != 0) {
 809                  $forumPere = &recuperer_instance_forum();
 810                  $loadOK = $forumPere->load($forumMetier->getParentId());
 811  
 812                  if (PEAR::isError($loadOK)) {
 813                      die ($loadOK->getMessage());
 814                  }
 815  
 816                  if (isset($GLOBALS['redirection_forum'])) {
 817                  //$redirect = $GLOBALS['redirection_forum']?.id_forum$GLOBALS['HTTP_GET_VARS'];
 818                      }
 819                  else {
 820                      global $id_article;
 821                      global $id_breve;
 822                      global $id_rubiquee;
 823  
 824                      if (isset($id_article)) {
 825                          $url = ereg_replace('^/', '', generer_url_article($id_article));
 826                          $adresse_site = lire_meta("adresse_site");
 827                          $redirect = "$adresse_site/$url";
 828                      }
 829  
 830                      if (isset($id_breve)) {
 831                          $url = ereg_replace('^/', '', generer_url_breve($id_breve));
 832                          $adresse_site = lire_meta("adresse_site");
 833                          $redirect = "$adresse_site/$url";
 834                      }
 835                      if (isset($id_rubrique)) {
 836                          $url = ereg_replace('^/', '', generer_url_rubrique($id_rubrique));
 837                          $adresse_site = lire_meta("adresse_site");
 838                          $redirect = "$adresse_site/$url";
 839                      }
 840                  }
 841                  if ($forumMetier->getStatut() == 'publie') {
 842                      $forumPere->sendMail($forumMetier, $redirect);
 843                  }
 844              }
 845          }
 846  
 847          // Poser un cookie pour ne pas retaper le nom / email
 848          $cookie_user = array('nom' => $auteur, 'email' => $email_auteur);
 849          spip_setcookie('spip_forum_user', serialize($cookie_user));
 850  
 851          // Envoi d'un mail aux auteurs
 852          $prevenir_auteurs = lire_meta("prevenir_auteurs");
 853  
 854          if ($prevenir_auteurs == "oui" AND $afficher_texte != "non") {
 855              if ($id_article = $forum_id_article) {
 856                  $url = ereg_replace('^/', '', generer_url_article($id_article));
 857                  $adresse_site = lire_meta("adresse_site");
 858                  $nom_site_spip = lire_meta("nom_site");
 859                  $url = "$adresse_site/$url";
 860                  $courr = _T('form_forum_message_auto'). "\n\n";
 861                  $parauteur = '';
 862  
 863                  if (strlen($auteur) > 2) {
 864                      $parauteur = " " . _T('forum_par_auteur', array('auteur' => $auteur));
 865                      if ($email_auteur)
 866                          $parauteur .= " <$email_auteur>";
 867                  }
 868  
 869                  $courr .= _T('forum_poste_par', array('parauteur' => $parauteur)). "\n";
 870                  $courr .= _T('forum_ne_repondez_pas'). "\n";
 871                  $courr .= "$url\n";
 872                  $courr .= "\n\n" . $titre . "\n\n" . textebrut(propre($texte)). "\n\n$nom_site_forum\n$url_site\n";
 873                  $sujet = "[$nom_site_spip] [" . _T('forum_forum'). "] $titre";
 874  
 875                  $auteurMetier = &recuperer_instance_auteur();
 876                  $allAuteurs = $auteurMetier->getAllForArticleId($id_article);
 877  
 878                  if (PEAR::isError($allAuteurs)) {
 879                      die ($allAuteurs->getMessage());
 880                  }
 881                  while (list(, $auteurMetier) = each($allAuteurs)) {
 882                      $email_auteur = trim($auteurMetier->getEmail());
 883  
 884                      if (strlen($email_auteur) < 3)
 885                          continue;
 886                      envoyer_mail($email_auteur, $sujet, $courr);
 887                  }
 888              }
 889          }
 890  
 891          if (!strstr($retour_forum, 'recalcul=oui')) {
 892              if (!strstr($retour_forum, '?')) {
 893                  $retour_forum .= '?';
 894              }
 895              else {
 896                  $retour_forum .= '&';
 897              }
 898              $retour_forum .= 'recalcul=oui';
 899          }
 900          @header ("Location: $retour_forum");
 901          exit;
 902      }
 903  }
 904  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7