[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> editer_rubrique.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/rubriques');
  16  
  17  // http://doc.spip.org/@action_editer_rubrique_dist
  18  function action_editer_rubrique_dist() {
  19  
  20      $securiser_action = charger_fonction('securiser_action', 'inc');
  21      $arg = $securiser_action();
  22  
  23      if (!$id_rubrique = intval($arg)) {
  24          if ($arg != 'oui') redirige_par_entete('./');
  25          $id_rubrique = insert_rubrique(_request('id_parent'));
  26      }
  27  
  28      revisions_rubriques($id_rubrique);
  29  
  30      $redirect = parametre_url(
  31          urldecode(_request('redirect')),
  32          'id_rubrique', $id_rubrique, '&');
  33      redirige_par_entete($redirect);
  34  }
  35  
  36  
  37  // http://doc.spip.org/@insert_rubrique
  38  function insert_rubrique($id_parent) {
  39      include_spip('base/abstract_sql');
  40      return spip_abstract_insert("spip_rubriques",
  41          "(titre, id_parent)",
  42          "('"._T('item_nouvelle_rubrique')."', ".intval($id_parent).")"
  43      );
  44  }
  45  
  46  // Enregistrer certaines modifications d'une rubrique
  47  // $c est un tableau qu'on peut proposer en lieu et place de _request()
  48  // http://doc.spip.org/@revisions_rubriques
  49  function revisions_rubriques($id_rubrique, $c=false) {
  50      include_spip('inc/autoriser');
  51      include_spip('inc/filtres');
  52  
  53      // Ces champs seront pris nom pour nom (_POST[x] => spip_articles.x)
  54      $champs_normaux = array('titre', 'texte', 'descriptif');
  55  
  56      // ne pas accepter de titre vide
  57      if (_request('titre', $c) === '')
  58          $c = set_request('titre', _T('ecrire:info_sans_titre'), $c);
  59  
  60      $champs = array();
  61      foreach ($champs_normaux as $champ) {
  62          $val = _request($champ, $c);
  63          if ($val !== NULL)
  64              $champs[$champ] = corriger_caracteres($val);
  65      }
  66  
  67      // traitement de la rubrique parente
  68      // interdiction de deplacer vers ou a partir d'une rubrique
  69      // qu'on n'administre pas.
  70      $parent = '';
  71      if (NULL !== ($id_parent = _request('id_parent', $c))
  72      AND $id_parent != $id_rubrique // au fou
  73      ) {
  74          $id_parent = intval($id_parent);
  75          $s = spip_fetch_array(spip_query("SELECT * FROM spip_rubriques WHERE id_rubrique=".intval($id_rubrique)));
  76          $old_parent = $s['id_parent'];
  77  
  78          if ($id_parent != $old_parent
  79          AND autoriser('publierdans', 'rubrique', $id_parent)
  80          AND autoriser('publierdans', 'rubrique', $old_parent)
  81          ) {
  82              $champs['id_parent'] = $id_parent;
  83          } else {
  84              spip_log("deplacement de $id_rubrique vers $id_parent refuse a " . $GLOBALS['auteur_session']['id_auteur'] . ' '.  $GLOBALS['auteur_session']['statut']);
  85          }
  86      }
  87  
  88      // si c'est une rubrique-secteur contenant des breves, ne deplacer
  89      // que si $confirme_deplace == 'oui', et changer l'id_rubrique des
  90      // breves en question
  91      if ($champs['id_parent']
  92      AND _request('confirme_deplace', $c) == 'oui') {
  93          $id_secteur = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_parent"));
  94          if ($id_secteur= $id_secteur['id_secteur'])
  95              spip_query("UPDATE spip_breves SET id_rubrique=$id_secteur WHERE id_rubrique=$id_rubrique");
  96      }
  97  
  98      // recuperer les extras
  99      if ($GLOBALS['champs_extra']) {
 100          include_spip('inc/extra');
 101          if ($extra = extra_update('rubriques', $id_rubrique, $c))
 102              $champs['extra'] = $extra;
 103      }
 104  
 105      // Envoyer aux plugins
 106      include_spip('inc/modifier'); # temporaire pour eviter un bug
 107      $champs = pipeline('pre_edition',
 108          array(
 109              'args' => array(
 110                  'table' => 'spip_rubriques',
 111                  'id_objet' => $id_rubrique
 112              ),
 113              'data' => $champs
 114          )
 115      );
 116  
 117      $update = array();
 118      foreach ($champs as $champ => $val)
 119          $update[] = $champ . '=' . _q($val);
 120  
 121      if (!count($update)) return;
 122  
 123      spip_query("UPDATE spip_rubriques SET ".join(', ', $update)." WHERE id_rubrique=$id_rubrique");
 124  
 125      if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
 126          include_spip("inc/indexation");
 127          marquer_indexer('spip_rubriques', $id_rubrique);
 128      }
 129  
 130      propager_les_secteurs();
 131  
 132      calculer_rubriques();
 133      calculer_langues_rubriques();
 134  
 135      // invalider les caches marques de cette rubrique
 136      include_spip('inc/invalideur');
 137      suivre_invalideur("id='id_rubrique/$id_rubrique'");
 138  
 139      // Notification ?
 140      pipeline('post_edition',
 141          array(
 142              'args' => array(
 143                  'table' => 'spip_rubriques',
 144                  'id_objet' => $id_rubrique
 145              ),
 146              'data' => $champs
 147          )
 148      );
 149  
 150  }
 151  
 152  ?>


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