[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/inc/ -> article_select.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  // Recupere les donnees d'un article pour composer un formulaire d'edition
  16  // (utilise par exec/article_edit)
  17  // id_article = numero d'article existant
  18  // id_rubrique = ou veut-on l'installer (pas obligatoire)
  19  // lier_trad = l'associer a l'article numero $lier_trad
  20  // new=oui = article a creer si on valide le formulaire
  21  // http://doc.spip.org/@article_select
  22  function article_select($id_article, $id_rubrique=0, $lier_trad=0, $id_version=0) {
  23      global $connect_id_auteur, $connect_id_rubrique, $spip_lang; 
  24  
  25      include_spip('inc/auth'); // pour auteurs_article si espace public
  26  
  27      if (is_numeric($id_article)) {
  28  
  29          if (!autoriser('modifier','article',$id_article))
  30              return array();
  31  
  32  // marquer le fait que l'article est ouvert en edition par toto a telle date
  33  // une alerte sera donnee aux autres redacteurs sur exec=articles
  34          if ($GLOBALS['meta']['articles_modif'] != 'non') {
  35              include_spip('inc/drapeau_edition');
  36              signale_edition ($id_article,  $GLOBALS['auteur_session'], 'article');
  37          }
  38          $row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article=$id_article"));
  39      // si une ancienne revision est demandee, la charger
  40      // en lieu et place de l'actuelle ; attention les champs
  41      // qui etaient vides ne sont pas vide's. Ca permet de conserver
  42      // des complements ajoutes "orthogonalement", et ca fait un code
  43      // plus generique.
  44          if ($id_version) {
  45              include_spip('inc/revisions');
  46              if ($textes = recuperer_version($id_article, $id_version)) {
  47                  foreach ($textes as $champ => $contenu)
  48                      $row[$champ] = $contenu;
  49              }
  50          }
  51          return $row;
  52      }
  53      // id_article non numerique, c'est une demande de creation.
  54      // Si c'est une demande de nouvelle traduction, init specifique
  55      if ($lier_trad)
  56          $row = article_select_trad($lier_trad);
  57      else {
  58          $row['titre'] = filtrer_entites(_T('info_nouvel_article'));
  59          $row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
  60          $row['id_rubrique'] = $id_rubrique;
  61      }
  62  
  63      // appel du script a la racine, faut choisir 
  64      // admin restreint ==> sa premiere rubrique
  65      // autre ==> la derniere rubrique cree
  66      if (!$row['id_rubrique']) {
  67          if ($connect_id_rubrique)
  68              $row['id_rubrique'] = $id_rubrique = $connect_id_rubrique[0]; 
  69          else {
  70              $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_rubrique DESC LIMIT 1"));
  71              $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique'];
  72          }
  73          if (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] )){
  74              // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
  75              $res = spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0");
  76              while (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] ) && $row_rub = spip_fetch_array($res)){
  77                  $row['id_rubrique'] = $row_rub['id_rubrique'];
  78              }
  79          }
  80      }
  81  
  82      // recuperer le secteur, pour affecter les bons champs extras
  83      if (!$row['id_secteur']) {
  84          $row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
  85          $row['id_secteur'] = $row_rub['id_secteur'];
  86      }
  87  
  88      return $row;
  89  }
  90  
  91  //
  92  // Si un article est demande en creation (new=oui) avec un lien de trad,
  93  // on initialise les donnees de maniere specifique
  94  //
  95  // http://doc.spip.org/@article_select_trad
  96  function article_select_trad($lier_trad) {
  97      // Recuperer les donnees de l'article original
  98      $result = spip_query("SELECT * FROM spip_articles WHERE id_article=$lier_trad");
  99      if ($row = spip_fetch_array($result)) {
 100          $row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
 101          $id_rubrique = $row['id_rubrique'];
 102      }
 103  
 104      // Regler la langue, si possible, sur celle du redacteur
 105      // Cela implique souvent de choisir une rubrique ou un secteur
 106      if (in_array($GLOBALS['spip_lang'],
 107      explode(',', $GLOBALS['meta']['langues_multilingue']))) {
 108          // Si le menu de langues est autorise sur les articles,
 109          // on peut changer la langue quelle que soit la rubrique
 110          // donc on reste dans la meme rubrique
 111          if ($GLOBALS['meta']['multi_articles'] == 'oui') {
 112              $row['id_rubrique'] = $row['id_rubrique']; # explicite :-)
 113          }
 114          else if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
 115              // Sinon, chercher la rubrique la plus adaptee pour
 116              // accueillir l'article dans la langue du traducteur
 117              if ($GLOBALS['meta']['multi_secteurs'] == 'oui') {
 118                  $id_parent = 0;
 119              } else {
 120                  // on cherche une rubrique soeur dans la bonne langue
 121                  $row_rub = spip_fetch_array(spip_query("SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
 122  
 123                  $id_parent = $row_rub['id_parent'];
 124              }
 125              $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE lang='".$GLOBALS['spip_lang']."' AND id_parent=$id_parent"));
 126              if ($row_rub)
 127                  $row['id_rubrique'] = $row_rub['id_rubrique'];
 128          }
 129      }
 130  
 131      return $row;
 132  }
 133  
 134  ?>


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