[ Index ]
 

Code source de SPIP Agora 1.4

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

title

Body

[fermer]

/Agora1-4/ -> mes_fonctions_agora.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  global $nl_preview_path;
  20  
  21  if (isset($nl_preview_path)) {
  22      $GLOBALS['dossier_squelettes'] = 'ecrire/squelettes_newsletter/' . $nl_preview_path;
  23  }
  24  else {
  25      $GLOBALS['dossier_squelettes'] = ($GLOBALS['dossier_squelettes'] ? $GLOBALS['dossier_squelettes']. '/' : '');
  26  }
  27  
  28  // Filtre SMILEYS - 23 janvier 2003
  29  // pour toute suggestion, remarque, proposition d'ajout d'un
  30  // smileys, etc ; reprotez vous au forum de l'article :
  31  // http://www.uzine.net/spip_contrib/article.php?id_article=38
  32  
  33  function smileys ($chaine) {
  34      $chemin = '<img alt="binette" src="IMG/binettes/';
  35  
  36      // On peut mettre les smileys-images où l'on veut. Mais il faut
  37      // penser à modifier la variable $chemin de la fonction en conséquence.
  38      $chaine = str_replace(":->", $chemin . "diable.png\">", $chaine);
  39      $chaine = str_replace(":-((", $chemin . "en_colere.png\">", $chaine);
  40      $chaine = str_replace(":-))", $chemin . "mort_de_rire.png\">", $chaine);
  41      $chaine = str_replace(":-D", $chemin . "mort_de_rire.png\">", $chaine);
  42      $chaine = str_replace(":-)", $chemin . "sourire.png\">", $chaine);
  43      $chaine = str_replace(":'-))", $chemin . "pleure_de_rire.png\">", $chaine);
  44      $chaine = str_replace(":'-D", $chemin . "pleure_de_rire.png\">", $chaine);
  45      $chaine = str_replace(":o)", $chemin . "rigolo.png\">", $chaine);
  46      $chaine = str_replace("B-)", $chemin . "lunettes.png\">", $chaine);
  47      $chaine = str_replace(";-)", $chemin . "clin_d-oeil.png\">", $chaine);
  48      $chaine = str_replace(":-p", $chemin . "tire_la_langue.png\">", $chaine);
  49      $chaine = str_replace(":-|", $chemin . "bof.png\">", $chaine);
  50      $chaine = str_replace(":-/", $chemin . "mouai.png\">", $chaine);
  51      $chaine = str_replace(":-o", $chemin . "surprit.png\">", $chaine);
  52      $chaine = str_replace(":-O", $chemin . "surprit.png\">", $chaine);
  53      $chaine = str_replace(":-(", $chemin . "pas_content.png\">", $chaine);
  54      $chaine = str_replace(":'-(", $chemin . "triste.png\">", $chaine);
  55  
  56      return $chaine;
  57  }
  58  
  59  // Partie dont il faut prévoir l'ajout à l'install
  60  /*
  61   * Nom du filtre      : QCM
  62   * Auteur             : Mathieu GIANNECCHINI
  63   * Date               : 7 Août 2003
  64   * Fonction du filtre : Parse le code du QCM tapé dans SPIP et stocke
  65   *                      les questions, réponses et commentaires
  66   *                      dans un tableau et retourne le code HTML du QCM
  67   */
  68  function qcm ($chaine) {
  69  
  70      /* Messages utilisés dans le QCM
  71       */
  72      $titreQCM = "QCM";
  73      $reponseJuste = "La r&eacute;ponse est juste";
  74      $reponseFausse = "La r&eacute;ponse est fausse";
  75      $reponseNulle = "Vous n'avez pas r&eacute;pondu";
  76  
  77      /* Bascule permettant de gérer les points spécifiés dans le
  78       * code du QCM
  79       */
  80      $gestionPoint = true;
  81  
  82      /* Booléen permettant de savoir si il y a un QCM dans l'article
  83       */
  84      $qcm = false;
  85  
  86      /* Initialisation du score
  87       */
  88      $score = 0;
  89  
  90      /* On récupère le code du qcm entre <qcm> et </qcm>
  91       */
  92      while (ereg("<qcm>", $chaine)) {
  93          $qcm = true;
  94          $codeHTML = "";
  95          list($texteAvant, $suite) = explode("<qcm>", $chaine, 2);
  96          list($qcm, $texteApres) = explode("</qcm>", $suite, 2);
  97  
  98          /* On isole les questions les réponses et les commentaires
  99           */
 100          $ligne = split("\n", $qcm);
 101          $nbligne = count($ligne);
 102  
 103          $premierequestion = $nbQuestion;
 104  
 105          for ($i = 0; $i < $nbligne; $i++) {
 106              /* Pour chaque ligne on regarde le premier caractère
 107               */
 108              switch ($ligne[$i][0]) {
 109                  case 'T':
 110                      $titreQCM = substr($ligne[$i], 1);
 111                      break;
 112  
 113                  case 'Q':
 114                      $nbQuestion++;
 115                      $question[$nbQuestion] = substr($ligne[$i], 1);
 116                      break;
 117  
 118                  case 'P':
 119                      /* On extrait les précisions de la proposition
 120                         */
 121                      list($reponse, $precis) = explode("|", $ligne[$i]);
 122  
 123                      /* On extrait le numéro de la proposition et son contenu
 124                         */
 125                      ereg("P([0-9]+)(.*)", $reponse, $eregResult1);
 126                      $numPropos = $eregResult1[1];
 127  
 128                      /* On extrait les points éventuellement associés
 129                       * à chaque réponse
 130                       */
 131                      if (ereg("[.](-?[0-9]+)(.*)", $eregResult1[2], $eregResult2)) {
 132                          $points[$nbQuestion][$numPropos] = $eregResult2[1];
 133                          $choix[$nbQuestion][$numPropos] = $eregResult2[2];
 134                      //$gestionPoint=true;
 135                      }
 136                      /* Si une erreur de syntaxe apparait
 137                       * on passe en mode par défaut pour la gestion des points
 138                       */
 139                      else {
 140                          $gestionPoint = false;
 141                          $choix[$nbQuestion][$numPropos] = $eregResult1[2];
 142                      }
 143                      $precision[$nbQuestion][$numPropos] = $precis;
 144                      break;
 145  
 146                  case 'R':
 147                      /* On récupère le numéro de la bonne réponse
 148                        */
 149                      ereg("R([0-9]+)(.*)", $ligne[$i], $eregResult);
 150                      $numProposition = $eregResult[1];
 151                      $bonneReponse[$nbQuestion] = $numProposition;
 152                      break;
 153  
 154                  default:
 155                      break;
 156              }
 157          }
 158  
 159          /*
 160           * Affichage du QCM
 161           */
 162          // Si on ne corrige pas on affiche le QCM
 163          if (!isset($GLOBALS["var_correction"])) {
 164              for ($i = $premierequestion + 1; $i <= count($question); $i++) {
 165                  $nomVarSelect = "var_Q" . $i;
 166                  $codeHTML .= "<div class=\"spip_qcm_question\"><img src=\"puce.gif\" alt=\"-\"> $question[$i]</div>";
 167                  $codeHTML .= "<div class=\"spip_qcm_proposition\">";
 168  
 169                  // Si il ya plus de 5 choix, on utilise une liste
 170                  if (count($choix[$i]) > 5) {
 171                      $codeHTML .= "<select name=\"$nomVarSelect\" class=\"spip_qcm_select\">";
 172  
 173                      for ($j = 1; $j <= count($choix[$i]); $j++) {
 174                          $codeHTML .= "<option value=\"$j\">";
 175                          $codeHTML .= $choix[$i][$j]. "</option>";
 176                      }
 177                      $codeHTML .= "</select>";
 178                  }
 179                  // Sinon des radio boutons
 180                  else {
 181                      for ($j = 1; $j <= count($choix[$i]); $j++) {
 182                          $codeHTML
 183                              .= "
 184         <input
 185                type=\"radio\"
 186                name=\"$nomVarSelect\"
 187                value=\"$j\">";
 188                          $codeHTML .= $choix[$i][$j]. "<br />";
 189                      }
 190                  }
 191                  $codeHTML .= "</div><br />";
 192              } // Fin traitement des questions
 193          }     //Fin du cas sans correction
 194  
 195          // Sinon on affiche la correction
 196          else {
 197  
 198              // Initialisation du code à retourner
 199              $codeHTML = "";
 200              for ($i = $premierequestion + 1; $i <= count($question); $i++) {
 201                  $nomVarSelect = "var_Q" . $i;
 202  
 203                  /* On comptabilise le maximum de points que l'on peut obtenir
 204                   */
 205                  if ($gestionPoint) {
 206                      $pointParQuestion = $points[$i][$bonneReponse[$i]];
 207                      $scoreMax += $pointParQuestion;
 208                  }
 209                  else {
 210                      $pointParQuestion = 1;
 211                      $scoreMax += $pointParQuestion;
 212                  }
 213  
 214                  // La réponse choisie
 215                  $codeHTML
 216                      .= "<div class=\"spip_qcm_question\"><img src=\"puce.gif\" alt=\"-\">$question[$i]<span class=\"spip_qcm_point\">($pointParQuestion pt)</span></div>";
 217  
 218                  // Si c'est juste
 219                  if ($bonneReponse[$i] == $GLOBALS[$nomVarSelect]) {
 220                      // Les points par défaut : 1 par bonne réponse
 221                      if ($gestionPoint) {
 222                          $score += $points[$i][$GLOBALS[$nomVarSelect]];
 223                      }
 224                      else {
 225                          $score++;
 226                      }
 227  
 228                      $codeHTML .= "<div class=\"spip_qcm_reponse\">$introReponse";
 229                      $codeHTML .= $choix[$i][$GLOBALS[$nomVarSelect]];
 230                      $codeHTML .= "</div>";
 231                      $codeHTML .= "<div class=\"spip_qcm_correction_juste\">$reponseJuste</div>";
 232                      if (isset($precision[$i][$GLOBALS[$nomVarSelect]])) {
 233                          $codeHTML .= "<center><div class=\"spip_qcm_precision\">";
 234                          $codeHTML .= $precision[$i][$GLOBALS[$nomVarSelect]];
 235                          $codeHTML .= "</div></center>";
 236                      }
 237                  }
 238                  // Si c'est faux
 239                  else {
 240                      if (isset($GLOBALS[$nomVarSelect])) {
 241                          $score += $points[$i][$GLOBALS[$nomVarSelect]];
 242                          $codeHTML .= "<div class=\"spip_qcm_reponse\">";
 243                          $codeHTML .= $choix[$i][$GLOBALS[$nomVarSelect]];
 244                          $codeHTML .= "</div>";
 245                          $codeHTML .= "<div class=\"spip_qcm_correction_faux\">$reponseFausse</div>";
 246                          if (isset($precision[$i][$GLOBALS[$nomVarSelect]])) {
 247                              $codeHTML .= "<center><div class=\"spip_qcm_precision\">";
 248                              $codeHTML .= $precision[$i][$GLOBALS[$nomVarSelect]];
 249                              $codeHTML .= "</div></center>";
 250                          }
 251                      }
 252                      else {
 253                          $codeHTML .= "<div class=\"spip_qcm_correction_null\">$reponseNulle</div>";
 254                      }
 255                  }
 256                  $codeHTML .= "<br />";
 257              }
 258          }
 259  
 260          // On ajoute les balises <HTML> et </HTML>
 261          $codeHTML = "<html>" . $codeHTML . "</html>";
 262  
 263          $chaine = $texteAvant . $codeHTML . $texteApres;
 264      } //fin du while
 265  
 266      if ($qcm) {
 267          if (!isset($GLOBALS["var_correction"])) {
 268              $teteFormulaire = "<form method=\"post\" action=\"\">";
 269              $piedFormulaire
 270                  = "
 271         <br>
 272         <input type=\"hidden\" name=\"var_correction\" value=\"yes\">
 273         <center><input type=\"submit\" value=\"Corriger\" class=\"spip_qcm_bouton_corriger\"></center>
 274         </form>";
 275              $chaine = $teteFormulaire . $chaine . $piedFormulaire;
 276          }
 277          else {
 278              // On ajoute le score final
 279              $chaine .= "<center><div class=\"spip_qcm_score\">Score : $score / $scoreMax<br></div></center>";
 280              $chaine
 281                  .= "<div class=\"spip_qcm_bouton_corriger\" align=\"right\">[ <a href=\"$PHP_SELF\">R&eacute;initialiser le QCM</a> ]</div>";
 282              unset ($GLOBALS["var_correction"]);
 283          }
 284          $chaine
 285              = "<center><div class=\"spip_qcm\"><div class=\"spip_qcm_titre\">" . $titreQCM . "<hr /></div>" . $chaine . "</div></center>";
 286      }
 287  
 288      return $chaine;
 289  }
 290  
 291  /*
 292   *   +----------------------------------+
 293   *    Nom du Filtre : decouper_en_page                                               
 294   *   +----------------------------------+
 295   *    Date : Vendredi 6 juin 2003
 296   *    Auteur :  "gpl"  : gpl@macplus.org  
 297   *              Aurélien PIERARD : aurelien.pierard@sig.premier-ministre.fr
 298   *   +-------------------------------------+
 299   *    Fonctions de ce filtre :
 300   *        Il sert a présenter un article sur plusieurs pages  
 301   *   +-------------------------------------+ 
 302   *  
 303   * Pour toute suggestion, remarque, proposition d'ajout
 304   * reportez-vous au forum de l'article :
 305   * http://www.uzine.net/spip_contrib/article.php?id_article=62
 306  */
 307  
 308  function decouper_en_page ($texte) {
 309      global $artsuite, $var_recherche, $num_pages;
 310  
 311      if (empty($artsuite))
 312          $artsuite = 0;
 313  
 314      // on divise la page (séparateur : "-----")        
 315      $page = split('-----', $texte);
 316      // Nombre total de pages
 317      $num_pages = count($page);
 318  
 319      // Si une seule page ou numéro illégal, alors retourner tout le texte.
 320      // Cas spécial : si var_recherche positionné, tout renvoyer pour permettre à la surbrillance de fonctionner correctement.
 321      if ($num_pages == 1 || !empty($var_recherche) || $artsuite < 0 || $artsuite > $num_pages) {
 322          // On place les ancres sur les intertitres
 323          $texte = preg_replace("|\{\{\{(.*)\}\}\}|U", "<a name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$0</a>", $texte);
 324          $array = explode("#NB_TITRE_DE_MON_ARTICLE#", $texte);
 325          $res = count($array);
 326          $i = 1;
 327          $texte = $array[0];
 328  
 329          while ($i < $res) {
 330              $texte = $texte . $i . $array[$i];
 331              $i++;
 332          }
 333          return $texte;
 334      }
 335  
 336      $p_prec = $artsuite - 1;
 337      $p_suiv = $artsuite + 1;
 338      $uri_art = generer_url_article($GLOBALS['id_article']);
 339      $uri_art .= strpos($uri_art, '?') ? '&' : '?';
 340  
 341      // On place les ancres sur les intertitres
 342      $page[$artsuite] = preg_replace("|\{\{\{(.*)\}\}\}|U", "<a name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$0</a>",
 343                                      $page[$artsuite]);
 344      $array = explode("#NB_TITRE_DE_MON_ARTICLE#", $page[$artsuite]);
 345      $res = count($array);
 346      $i = 1;
 347      $page[$artsuite] = $array[0];
 348  
 349      while ($i < $res) {
 350          $page[$artsuite] = $page[$artsuite]. $i . $array[$i];
 351          $i++;
 352      }
 353  
 354      // Pagination
 355      switch (TRUE) {
 356          case ($artsuite == 0):
 357              $precedent = "";
 358              $suivant = "<a href='" . $uri_art . "artsuite=" . $p_suiv . "'>&gt;&gt;</a>";
 359              break;
 360  
 361          case ($artsuite == ($num_pages - 1)):
 362              $precedent = "<a href='" . $uri_art . "artsuite=" . $p_prec . "'>&lt;&lt;</a>";
 363              $suivant = "";
 364              break;
 365  
 366          default:
 367              $precedent = "<a href='" . $uri_art . "artsuite=" . $p_prec . "'>&lt;&lt;</a>";
 368              $suivant = "<a href='" . $uri_art . "artsuite=" . $p_suiv . "'>&gt;&gt;</a>";
 369              break;
 370      }
 371  
 372      for ($i = 0; $i < $num_pages; $i++) {
 373          $j = $i;
 374          if ($i == $artsuite) {
 375              $milieu .= " <strong>" . ++$j . "</strong> ";
 376          }
 377          else {
 378              $milieu .= " <a href='" . $uri_art . "artsuite=$i'>" . ++$j . "</a> ";
 379          }
 380      }
 381  
 382      // Ici, on peut personnaliser la présentation
 383      $resultat .= $page[$artsuite];
 384      $resultat
 385          .= "<p class='pagination'><div class='pagination' align='center'>pages : $precedent $milieu $suivant</div></p>";
 386      return $resultat;
 387  }
 388  
 389  // FIN du Filtre decouper_en_page
 390  
 391  /*
 392   *   +----------------------------------+
 393   *    Nom du Filtre : Sommaire de l'article                                               
 394   *   +----------------------------------+
 395   *    Date : Vendredi 6 juin 2003
 396   *    Auteur :  Noplay (noplay@altern.org) 
 397   *              Aurélien PIERARD : aurelien.pierard@sig.premier-ministre.fr                                     
 398   *   +-------------------------------------+
 399   *    Fonctions de ce filtre :
 400   *      Cette modification permet d'afficher le sommaire de l'article 
 401   *      généré dynamiquement à partir du texte de l'article. Vous pouvez naviguer 
 402   *      dans l'article en cliquant sur les titres du sommaires. 
 403   *
 404   *      Tous ce qui ce trouve entre {{{ et }}} est considéré comme un titre à ajouter au sommaire de l'article.
 405   *   +-------------------------------------+ 
 406   *  
 407   * Pour toute suggestion, remarque, proposition d'ajout
 408   * reportez-vous au forum de l'article :
 409   * http://www.uzine.net/spip_contrib/article.php?id_article=76
 410  */
 411  //SOMMAIRE
 412  function sommaire_article ($texte) {
 413      $artsuite = 0;
 414      $page = split('-----', $texte);
 415      $uri_art = generer_url_article($GLOBALS['id_article']);
 416      $uri_art .= strpos($uri_art, '?') ? '&' : '?';
 417  
 418      $i = 0;
 419      $texte = "";
 420  
 421      while ($page[$i]) {
 422          // On ajoute une ancre aux intertitres "{{{ }}}" que l'on utilise pour créer le sommaire
 423          preg_match_all("|\{\{\{(.*)\}\}\}|U", $page[$i], $regs);
 424          $nb = 1;
 425  
 426          for ($j = 0; $j < count($regs[1]); $j++) {
 427              $p = $i + 1;
 428              $texte
 429                  = $texte . "<a href=\"" . $uri_art . "artsuite=" . $i . "#sommaire_" . $nb . "\" title=\"" . $regs[1][$j]. "\">" . $regs[1][$j]. "</a>, p$p<br />";
 430              $nb++;
 431          }
 432          $i++;
 433      }
 434  
 435      return $texte;
 436  }
 437  // Fin du filtre sommaire
 438  
 439  /*
 440   *   +----------------------------------+
 441   *    Nom du Filtre :    accord_pluriel
 442   *   +----------------------------------+
 443   *    Date : mercredi 16 avril 2003
 444   *    Auteur :  Roustoubi (roustoubi@tiscali.fr)
 445   *   +-------------------------------------+
 446   *    Fonctions de ce filtre :
 447   *    Accorde le nom singulier passé en paramètre avec le nombre qui le quantifie
 448   *    Exemple : [#TOTAL_BOUCLE (#TOTAL_BOUCLE|accord_pluriel{article})]
 449   *   +-------------------------------------+ 
 450   *  
 451   * Pour toute suggestion, remarque, proposition d'ajout
 452   * reportez-vous au forum de l'article :
 453   * http://www.uzine.net/spip_contrib/article.php?id_article=111
 454  */
 455  
 456  function accord_pluriel ($nombre, $nom1 = '', $nom2 = '') {
 457      if ($nom1 == '') {
 458          return "Erreur filtre <b>&laquo; accord_pluriel &raquo;</b> : probl&egrave;me de param&egrave;tre";
 459      }
 460  
 461      if ($nom2 != '') {
 462          $nom2 = " " . $nom2;
 463          $nom2s = $nom2 . "s";
 464      }
 465  
 466      if ($nombre == "0" OR $nombre == "1") {
 467          $texte = $nombre . "&nbsp;" . $nom1 . $nom2;
 468      }
 469      else {
 470          $texte = $nombre . "&nbsp;" . $nom1 . "s" . $nom2s;
 471      }
 472  
 473      return $texte;
 474  }
 475  // FIN du Filtre accord_pluriel
 476  
 477  // Filtre pour afficher les chiffres en lettre
 478  
 479  function chiffre ($unites, $genre = '') {
 480      if ($unites == 1 AND $genre == 'fem') {
 481          $retour = "une";
 482      }
 483  
 484      if ($unites == 1 AND $genre != 'fem') {
 485          $retour = "un";
 486      }
 487  
 488      if ($unites == 2) {
 489          $retour = "deux";
 490      }
 491  
 492      if ($unites == 3) {
 493          $retour = "trois";
 494      }
 495  
 496      if ($unites == 4) {
 497          $retour = "quatre";
 498      }
 499  
 500      if ($unites == 5) {
 501          $retour = "cinq";
 502      }
 503  
 504      if ($unites == 6) {
 505          $retour = "six";
 506      }
 507  
 508      if ($unites == 7) {
 509          $retour = "sept";
 510      }
 511  
 512      if ($unites == 8) {
 513          $retour = "huit";
 514      }
 515  
 516      if ($unites == 9) {
 517          $retour = "neuf";
 518      }
 519  
 520      return $retour;
 521  }
 522  
 523  function chiffre_sans ($unites) {
 524      if ($unites == 2) {
 525          $retour = "deux";
 526      }
 527  
 528      if ($unites == 3) {
 529          $retour = "trois";
 530      }
 531  
 532      if ($unites == 4) {
 533          $retour = "quatre";
 534      }
 535  
 536      if ($unites == 5) {
 537          $retour = "cinq";
 538      }
 539  
 540      if ($unites == 6) {
 541          $retour = "six";
 542      }
 543  
 544      if ($unites == 7) {
 545          $retour = "sept";
 546      }
 547  
 548      if ($unites == 8) {
 549          $retour = "huit";
 550      }
 551  
 552      if ($unites == 9) {
 553          $retour = "neuf";
 554      }
 555  
 556      return $retour;
 557  }
 558  
 559  function chiffre_et ($unites, $genre = '') {
 560      if ($unites == 1 AND $genre == 'fem') {
 561          $retour = " et une";
 562      }
 563  
 564      if ($unites == 1 AND $genre != 'fem') {
 565          $retour = " et un";
 566      }
 567  
 568      if ($unites == 2) {
 569          $retour = "-deux";
 570      }
 571  
 572      if ($unites == 3) {
 573          $retour = "-trois";
 574      }
 575  
 576      if ($unites == 4) {
 577          $retour = "-quatre";
 578      }
 579  
 580      if ($unites == 5) {
 581          $retour = "-cinq";
 582      }
 583  
 584      if ($unites == 6) {
 585          $retour = "-six";
 586      }
 587  
 588      if ($unites == 7) {
 589          $retour = "-sept";
 590      }
 591  
 592      if ($unites == 8) {
 593          $retour = "-huit";
 594      }
 595  
 596      if ($unites == 9) {
 597          $retour = "-neuf";
 598      }
 599  
 600      return $retour;
 601  }
 602  
 603  function chiffre_dix ($unites) {
 604      if ($unites == 0) {
 605          $retour = "dix";
 606      }
 607  
 608      if ($unites == 1) {
 609          $retour = "onze";
 610      }
 611  
 612      if ($unites == 2) {
 613          $retour = "douze";
 614      }
 615  
 616      if ($unites == 3) {
 617          $retour = "treize";
 618      }
 619  
 620      if ($unites == 4) {
 621          $retour = "quatorze";
 622      }
 623  
 624      if ($unites == 5) {
 625          $retour = "quinze";
 626      }
 627  
 628      if ($unites == 6) {
 629          $retour = "seize";
 630      }
 631  
 632      if ($unites == 7) {
 633          $retour = "dix-sept";
 634      }
 635  
 636      if ($unites == 8) {
 637          $retour = "dix-huit";
 638      }
 639  
 640      if ($unites == 9) {
 641          $retour = "dix-neuf";
 642      }
 643  
 644      return $retour;
 645  }
 646  
 647  function chiffre_et_dix ($unites) {
 648      if ($unites == 0) {
 649          $retour = "-dix";
 650      }
 651  
 652      if ($unites == 1) {
 653          $retour = " et onze";
 654      }
 655  
 656      if ($unites == 2) {
 657          $retour = "-douze";
 658      }
 659  
 660      if ($unites == 3) {
 661          $retour = "-treize";
 662      }
 663  
 664      if ($unites == 4) {
 665          $retour = "-quatorze";
 666      }
 667  
 668      if ($unites == 5) {
 669          $retour = "-quinze";
 670      }
 671  
 672      if ($unites == 6) {
 673          $retour = "-seize";
 674      }
 675  
 676      if ($unites == 7) {
 677          $retour = "-dix-sept";
 678      }
 679  
 680      if ($unites == 8) {
 681          $retour = "-dix-huit";
 682      }
 683  
 684      if ($unites == 9) {
 685          $retour = "-dix-neuf";
 686      }
 687  
 688      return $retour;
 689  }
 690  
 691  function dizaines ($dizaines, $unites, $genre = '') {
 692      if ($dizaines == 0) {
 693          $retour = chiffre($unites, $genre);
 694      }
 695  
 696      if ($dizaines == 1) {
 697          $retour = chiffre_dix($unites);
 698      }
 699  
 700      if ($dizaines == 2) {
 701          $retour = "vingt" . chiffre_et($unites, $genre);
 702      }
 703  
 704      if ($dizaines == 3) {
 705          $retour = "trente" . chiffre_et($unites, $genre);
 706      }
 707  
 708      if ($dizaines == 4) {
 709          $retour = "quarante" . chiffre_et($unites, $genre);
 710      }
 711  
 712      if ($dizaines == 5) {
 713          $retour = "cinquante" . chiffre_et($unites, $genre);
 714      }
 715  
 716      if ($dizaines == 6) {
 717          $retour = "soixante" . chiffre_et($unites, $genre);
 718      }
 719  
 720      if ($dizaines == 7) {
 721          $retour = "soixante" . chiffre_et_dix($unites);
 722      }
 723  
 724      if ($dizaines == 8 & $unites > 0) {
 725          $retour = "quatre-vingt-" . chiffre($unites, $genre);
 726      }
 727  
 728      if ($dizaines == 8 & $unites == 0) {
 729          $retour = "quatre-vingts";
 730      }
 731  
 732      if ($dizaines == 9) {
 733          $retour = "quatre-vingt-" . chiffre_dix($unites);
 734      }
 735  
 736      return $retour;
 737  }
 738  
 739  function par3 ($lavaleur, $demille, $genre = 'masc', $type = '') {
 740      if (strlen($lavaleur) == 1) {
 741          $lavaleur = "00" . $lavaleur;
 742      }
 743  
 744      if (strlen($lavaleur) == 2) {
 745          $lavaleur = "0" . $lavaleur;
 746      }
 747  
 748      $centaines = substr($lavaleur, 0, 1);
 749      $dizaines = substr($lavaleur, 1, 1);
 750      $unites = substr($lavaleur, 2, 1);
 751  
 752      if ($centaines > 1) {
 753          $cent = "cents";
 754      }
 755  
 756      if ($demille == "mille") {
 757          $cent = "cent";
 758      }
 759  
 760      if ($dizaines + $unites > 0) {
 761          $cent = "cent";
 762      }
 763  
 764      if (($demille == "million" OR $demille == "milliard")AND $centaines + $dizaines + $unites > 1) {
 765          $demille = $demille . "s";
 766      }
 767  
 768      if ($centaines + $dizaines + $unites > 0) {
 769          $demille = " " . $demille;
 770      }
 771      else {
 772          $demille = "";
 773      }
 774  
 775      if ($centaines > 0) {
 776          $retour = chiffre_sans($centaines). " $cent " . dizaines($dizaines, $unites, $genre);
 777      }
 778      else {
 779          $retour = dizaines($dizaines, $unites, $genre);
 780      }
 781  
 782      if (trim($retour) == "un" & trim($demille) == "mille") {
 783          $retour = "";
 784      }
 785  
 786      if (trim($retour) == "un" AND $type == 'date') {
 787          $retour = "premier";
 788          if ($genre == 'fem')
 789              $retour = "premi&egrave;re";
 790      }
 791  
 792      if ($genre == 'fem' AND $retour == "un")
 793          $retour = "une";
 794  
 795      return $retour . $demille;
 796  }
 797  
 798  function en_lettres ($lavaleur, $genre = 'masc', $type = '') {
 799      $lavaleur = strrev($lavaleur);
 800  
 801      $unites = par3(strrev(substr($lavaleur, 0, 3)), "", "$genre", "$type");
 802      $milliers = par3(strrev(substr($lavaleur, 3, 3)), "mille");
 803      $millions = par3(strrev(substr($lavaleur, 6, 3)), "million");
 804      $milliards = par3(strrev(substr($lavaleur, 9, 3)), "milliard");
 805  
 806      return trim("$milliards $millions $milliers $unites");
 807  }
 808  
 809  function jour_en_lettres ($lavaleur) {
 810      return en_lettres($lavaleur, '', 'date');
 811  }
 812  
 813  function en_lettres_fem ($lavaleur) {
 814      return en_lettres($lavaleur, 'fem', '');
 815  }
 816  
 817  function enlettres ($lenombre, $unite = '', $unites = '', $entre = '', $apres = '', $apress = '') {
 818      $lenombre = ereg_replace(",", ".", $lenombre);
 819      $lenombre = explode(".", $lenombre);
 820  
 821      $entier = $lenombre[0];
 822  
 823      if ($entier > 1 & strlen($unite) > 0) {
 824          $unite = $unites;
 825      }
 826  
 827      $virgule = $lenombre[1];
 828  
 829      if ($virgule > 1 & strlen($apres) > 0) {
 830          $apres = $apress;
 831      }
 832  
 833      if ($entier == 0 OR $virgule == 0) {
 834          $entre = "";
 835      }
 836  
 837      if ($entier == 0) {
 838          $unite = "";
 839      }
 840  
 841      $entier = en_lettres($entier);
 842  
 843      if ($virgule == 0) {
 844          $apres = "";
 845      }
 846  
 847      $virgule = en_lettres($virgule);
 848  
 849      return trim("$entier $unite $entre $virgule $apres");
 850  }
 851  
 852  // Fin du filtre EN LETTRE
 853  
 854  /*
 855   *   +----------------------------------+
 856   *    Nom du Filtre :    nb_spip2xhtml
 857   *                       nb_checkparas
 858   *   +----------------------------------+
 859   *    Date : jeudi 22 mai 2003
 860   *    Auteur :  stef      + nospam@notabene.f2o.org
 861   *              Aurélien
 862   *   +-------------------------------------+
 863   *    Fonctions de ces filtres :
 864   *     Ils rendent conforme à xhtml le contenu généré par spip
 865   *   +-------------------------------------+ 
 866   *  
 867   * Pour toute suggestion, remarque, proposition d'ajout
 868   * reportez-vous au forum de l'article :
 869   * http://www.uzine.net/spip_contrib/article.php?id_article=164
 870  */
 871  
 872  // FILTRE POUR COMPLIANCE XHTML 1.0
 873  
 874  /*
 875  * reformatage des intertitres
 876  * */
 877  
 878  $GLOBALS['debut_intertitre'] = "\n<h3>";
 879  $GLOBALS['fin_intertitre'] = "</h3>\n";
 880  
 881  /*
 882  * formatage du contenu pour validation xhtml
 883  * */
 884  
 885  function nb_spip2xhtml ($str) {
 886      if ($str != "") {
 887          // suppresion des hspace, vspace
 888          $str = preg_replace("/(h|v)space='.'|border=0/i", "", $str);
 889  
 890          // img xhtml <img> -> <img />
 891          $str = preg_replace("/<img([^>]*)>/i", "<img \\1 />", $str);
 892  
 893          // align -> style text-align
 894          $str = preg_replace("/align='([a-z]*)'/i", "style=\"float:\\1;\"", $str);
 895  
 896          // h3 imbrique dans un p
 897          $str = preg_replace("/<p class=\"spip\"> <h3>/i", "<h3>", $str);
 898          $str = preg_replace("/<\/h3>( )*<\/p>/i", "</h3>", $str);
 899  
 900          // tableaux imbriques dans p
 901          $str = preg_replace("/<p class=\"spip\"><table class=\"spip\">/i", "<table>", $str);
 902          $str = preg_replace("/<\/table>( )*<\/p>/i", "</table>", $str);
 903  
 904          // ol ou ul imbrique dans p
 905          $str = preg_replace("/<p class=\"spip\"><(o|u)l class=\"spip\">/i", "<\\1l class=\"spip\">", $str);
 906          $str = preg_replace("/<\/(o|u)l>( )*<\/p>/i", "</\\1l>", $str);
 907  
 908          // <br> -> <br />
 909          $str = preg_replace("/<br>/i", "<br />", $str);
 910  
 911          // <b> -> <strong> et <i> -> <em>
 912          $str = preg_replace("/(<b class=\"spip\">|<b>)/i", "<strong>", $str);
 913          $str = preg_replace("/(<i class=\"spip\">|<i>)/i", "<em>", $str);
 914          $str = preg_replace("/<\/b>/i", "</strong>", $str);
 915          $str = preg_replace("/<\/i>/i", "</em>", $str);
 916  
 917          // FORMULAIRE
 918          // passage des balises en minucule
 919          $str = ereg_replace("<FORM", "<form", "$str");
 920          $str = ereg_replace("<INPUT", "<input", "$str");
 921          $str = ereg_replace("<TEXTAREA", "<textarea", "$str");
 922          $str = ereg_replace("</TEXTAREA>", "</textarea>", "$str");
 923          $str = preg_replace("/(<.*?)(TYPE=\')(.*?)(\')(.*?>)/", "\\1type=\"\\3\"\\5", "$str");
 924          $str = ereg_replace("VALUE=", "value=", "$str");
 925          // Pour le formulaire FORUM création des attributs id
 926          $str = preg_replace("/(<.*?)(NAME=')(.*?)(')(.*?>)/", "\\1id=\"\\3\" name=\"\\3\"\\5", "$str");
 927          // On remplace name par id dans la balise form
 928          $str = preg_replace("/(<form.*?)(name=)(.*?>)/", "\\1id=\\3", "$str");
 929          // on ferme les balises input
 930          $str = preg_replace("/(<input.*?)(>)/", "\\1 />", "$str");
 931          // On supprime l'attribut WRAP des zones de texte qui n'est pas valide xhtml
 932          $str = preg_replace("/(<textarea.*?)( wrap=hard| wrap=soft| wrap=off)(.*?>)/", "\\1\\3", "$str");
 933      }
 934  
 935      // renvoyer la chaine corrigee
 936      return $str;
 937  }
 938  // FIN du filtre nb_spip2xhtml
 939  
 940  /*
 941  * les notes ont un petit bug :il manque parfois le <p> de debut
 942  * cette fonction y remedie
 943  * fonction utilisee aussi sur mon site pour la bio des auteurs notamment
 944  * */
 945  
 946  function nb_checkparas ($str) {
 947      $str = trim($str);
 948  
 949      if ($str != "") {
 950          if (substr($str, 0, 2) != "<p") {
 951              $str = "<p>" . $str;
 952          }
 953          if (substr($str, strlen($str) - 4, 4) != "</p>") {
 954              $str .= "</p>";
 955          }
 956      }
 957  
 958      return $str;
 959  }
 960  // FIN du filtre nb_checkparas
 961  
 962  function nettoyer_marqueur ($texte) {
 963      // Enlève la conversion caractères spéciaux HTML
 964      $trans_tbl = get_html_translation_table(HTML_ENTITIES);
 965      $trans_tbl = array_flip($trans_tbl);
 966      $texte = strtr($texte, $trans_tbl);
 967      $accents =
 968      /* A */ chr(192). chr(193). chr(194). chr(195). chr(196). chr(197).
 969      /* a */ chr(224). chr(225). chr(226). chr(227). chr(228). chr(229).
 970      /* O */ chr(210). chr(211). chr(212). chr(213). chr(214). chr(216).
 971      /* o */ chr(242). chr(243). chr(244). chr(245). chr(246). chr(248).
 972      /* E */ chr(200). chr(201). chr(202). chr(203).
 973      /* e */ chr(232). chr(233). chr(234). chr(235).
 974      /* Cc */ chr(199). chr(231).
 975      /* I */ chr(204). chr(205). chr(206). chr(207).
 976      /* i */ chr(236). chr(237). chr(238). chr(239).
 977      /* U */ chr(217). chr(218). chr(219). chr(220).
 978      /* u */ chr(249). chr(250). chr(251). chr(252).
 979      /* yNn */ chr(255). chr(209). chr(241);
 980      $texte = ereg_replace("<[^<]*>", "", $texte);
 981      $texte = ereg_replace("[\!\?']", " ", $texte);
 982      $texte = ereg_replace(" ", "_", $texte);
 983      $texte = ereg_replace(" ", "_", $texte);
 984      $texte = str_replace('&#8217;', '_', $texte);
 985      return strtolower(strtr($texte, $accents, "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"));
 986  }
 987  
 988  function pdf_first_clean ($texte) {
 989      // $texte = ereg_replace("<p class[^>]*>", "<P>", $texte);
 990      //Translation des codes iso
 991      // PB avec l'utilisation de <code>
 992      $trans = get_html_translation_table(HTML_ENTITIES);
 993      $trans = array_flip($trans);
 994      $trans["<br />\n"]
 995          = "<BR>"; // Pour éviter que le \n ne se tranforme en espace dans les <DIV class=spip_code> (TT, tag SPIP : code)
 996      $trans["?"] = "oe";
 997      $trans["?"] = "...";
 998      $trans["'"] = "'";
 999      $trans["-"] = "-";
1000      $trans["'"] = "'";
1001      $trans['"'] = "\"";
1002      $trans['"'] = "\"";
1003      $trans["&ucirc;"] = "û";
1004      $trans['$'] = '\$';
1005      $trans['->'] = '-»';
1006      $trans['<-'] = '«-';
1007      $texte = strtr($texte, $trans);
1008  
1009      // Echappement des "
1010      $texte = ereg_replace("\"", "\\\"", $texte);
1011  
1012      // Traitement des Espaces
1013      $texte = ereg_replace("(&nbsp;| )+", " ", $texte);
1014  
1015      // Traitement des cadres
1016      $trans = array("\n" => '<BR>');
1017  
1018      while (preg_match('/(.*<textarea[^>]*>)(.*\n.*)(<\/textarea>.*)/ims', $texte, $textarea)) {
1019          $rep = strtr($textarea[2], $trans);
1020          $texte = $textarea[1]. $rep . $textarea[3];
1021      }
1022  
1023      return $texte;
1024  }
1025  ?>


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