squellete2
[aidenligne_francais_universite.git] / ecrire / action / editer_auteurs.php
CommitLineData
c495c100
P
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
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('base/abstract_sql');
16
17// http://doc.spip.org/@action_editer_auteurs_dist
18function 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
64function 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
78function 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
95function 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?>