Commit | Line | Data |
---|---|---|
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 | ||
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 | ?> |