[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/action/ -> editer_auteurs.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('base/abstract_sql');
  16  
  17  // http://doc.spip.org/@action_editer_auteurs_dist
  18  function action_editer_auteurs_dist() {
  19      
  20      $securiser_action = charger_fonction('securiser_action', 'inc');
  21      $arg = $securiser_action();
  22      $redirect = urldecode(_request('redirect'));
  23      if ($script = _request('script'))
  24          $redirect = parametre_url($redirect,'script',$script,'&');
  25      if ($titre = _request('titre'))
  26          $redirect = parametre_url($redirect,'titre',$titre,'&');
  27  
  28      if (preg_match(",^\W*(\d+)\W(\w*)\W-(\d+)$,", $arg, $r)) {
  29          supprimer_auteur_et_rediriger($r[2], $r[1], $r[3], parametre_url($redirect,'type',$r[2],'&'));
  30      }
  31      elseif (preg_match(",^\W*(\d+)\W(\w*)\W(\d+)$,", $arg, $r)) {
  32          ajouter_auteur_et_rediriger($r[2], $r[1], $r[3], parametre_url($redirect,'type',$r[2],'&'));
  33      }
  34      elseif (preg_match(",^\W*(\d+)\W(\w*)$,", $arg, $r)) {
  35          if  ($nouv_auteur = intval(_request('nouv_auteur'))) {
  36              ajouter_auteur_et_rediriger($r[2], $r[1], $nouv_auteur, parametre_url($redirect,'type',$r[2],'&'));
  37          } else if ($cherche = _request('cherche_auteur')) {
  38              if ($p = strpos($redirect, '#')) {
  39                  $ancre = substr($redirect,$p);
  40                  $redirect = substr($redirect,0,$p);
  41              } else $ancre ='';
  42              $redirect = parametre_url($redirect,'type',$r[2],'&');
  43              $res = rechercher_auteurs($cherche);
  44              $n = count($res);
  45  
  46              if ($n == 1)
  47              # Bingo. Signaler le choix fait.
  48                  ajouter_auteur_et_rediriger($r[2], $r[1], $res[0], "$redirect&ids=" . $res[0] . "&cherche_auteur=" . rawurlencode($cherche) . $ancre);
  49              # Trop vague. Le signaler.
  50              elseif ($n > 16)
  51                  redirige_par_entete("$redirect&cherche_auteur=$cherche&ids=-1" . $ancre);
  52              elseif (!$n)
  53              # Recherche vide (mais faite). Le signaler 
  54                  redirige_par_entete("$redirect&cherche_auteur=$cherche&ids="  . $ancre);
  55              else
  56              # renvoyer un formulaire de choix
  57                  redirige_par_entete("$redirect&cherche_auteur=$cherche&ids=" . join(',',$res)  . $ancre);
  58  
  59          }
  60      } else spip_log("action_editer_auteur: $arg pas compris");
  61  }
  62  
  63  // http://doc.spip.org/@supprimer_auteur_et_rediriger
  64  function supprimer_auteur_et_rediriger($type, $id, $id_auteur, $redirect)
  65  {
  66      if (preg_match(',^[a-z]*$,',$type)){
  67          spip_query("DELETE FROM spip_auteurs_{$type}s WHERE id_auteur="._q($id_auteur)." AND id_{$type}="._q($id));
  68          if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
  69                  include_spip("inc/indexation");
  70                  marquer_indexer("spip_{$type}s", $id);
  71          }
  72      }
  73  
  74      if ($redirect) redirige_par_entete($redirect);
  75  }
  76  
  77  // http://doc.spip.org/@ajouter_auteur_et_rediriger
  78  function ajouter_auteur_et_rediriger($type, $id, $id_auteur, $redirect)
  79  {
  80      if (preg_match(',^[a-z]*$,',$type)){
  81          $res = spip_query("SELECT id_$type FROM spip_auteurs_{$type}s WHERE id_auteur=" . _q($id_auteur) . " AND id_{$type}=" . $id);
  82          if (!spip_num_rows($res))
  83              spip_abstract_insert("spip_auteurs_{$type}s", "(id_auteur,id_{$type})", "($id_auteur,$id)");
  84      
  85          if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
  86              include_spip("inc/indexation");
  87              marquer_indexer("spip_{$type}s", $id);
  88          }
  89      }
  90  
  91      if ($redirect) redirige_par_entete($redirect);
  92  }
  93  
  94  // http://doc.spip.org/@rechercher_auteurs
  95  function rechercher_auteurs($cherche_auteur)
  96  {
  97      include_spip('inc/mots');
  98      include_spip('inc/charsets'); // pour tranlitteration
  99      $result = spip_query("SELECT id_auteur, nom FROM spip_auteurs");
 100      $table_auteurs = array();
 101      $table_ids = array();
 102      while ($row = spip_fetch_array($result)) {
 103          $table_auteurs[] = $row["nom"];
 104          $table_ids[] = $row["id_auteur"];
 105      }
 106      return mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
 107  }
 108  
 109  ?>


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