[SPIP] ~maj v2.1.25-->2.1.26
[velocampus/web/www.git] / www / prive / formulaires / editer_mot.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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/actions');
16 include_spip('inc/editer');
17
18 // http://doc.spip.org/@inc_editer_mot_dist
19 function formulaires_editer_mot_charger_dist($id_mot='new', $id_groupe=0, $retour='', $ajouter_id_article=0, $table='', $table_id=0, $config_fonc='mots_edit_config', $row=array(), $hidden=''){
20 $valeurs = formulaires_editer_objet_charger('mot',$id_mot,$id_groupe,'',$retour,$config_fonc,$row,$hidden);
21 if ($valeurs['id_parent'] && !$valeurs['id_groupe'])
22 $valeurs['id_groupe'] = $valeurs['id_parent'];
23 $valeurs['table'] = $table;
24
25 // Si nouveau et titre dans l'url : fixer le titre
26 if ($id_mot == 'oui'
27 AND strlen($titre = _request('titre')))
28 $valeurs['titre'] = $titre;
29
30 return $valeurs;
31 }
32
33 /**
34 * Identifier le formulaire en faisant abstraction des parametres qui
35 * ne representent pas l'objet edite
36 */
37 function formulaires_editer_mot_identifier_dist($id_mot='new', $id_groupe=0, $retour='', $ajouter_id_article=0, $table='', $table_id=0, $config_fonc='mots_edit_config', $row=array(), $hidden=''){
38 return serialize(array($id_mot,$ajouter_id_article,$row));
39 }
40
41 // Choix par defaut des options de presentation
42 // http://doc.spip.org/@articles_edit_config
43 function mots_edit_config($row)
44 {
45 global $spip_ecran, $spip_lang, $spip_display;
46
47 $config = $GLOBALS['meta'];
48 $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
49 $config['langue'] = $spip_lang;
50
51 $config['restreint'] = ($row['statut'] == 'publie');
52 return $config;
53 }
54
55 function formulaires_editer_mot_verifier_dist($id_mot='new', $id_groupe=0, $retour='', $ajouter_id_article=0, $table='', $table_id=0, $config_fonc='mots_edit_config', $row=array(), $hidden=''){
56
57 $erreurs = formulaires_editer_objet_verifier('mot',$id_mot,array('titre'));
58 // verifier qu'un mot du meme groupe n'existe pas avec le meme titre
59 // la comparaison accepte un numero absent ou different
60 // sinon avertir
61 if (!count($erreurs) AND !_request('confirm_titre_mot')){
62 if ($l = sql_allfetsel('id_mot', "spip_mots",
63 "titre REGEXP ".sql_quote("^([0-9]+[.] )?".preg_quote(supprimer_numero(_request('titre')))."$")
64 ." AND id_mot<>".intval($id_mot))) {
65 $a = 'id_mot='.$l[0]['id_mot'];
66 $h = generer_url_ecrire('mots_edit', $a);
67 $l = join(' ', array_map('array_shift', $l));
68 $t = _T('avis_doublon_mot_cle');
69 $erreurs['titre'] = "$t <a href='$h' title='$l'>?</a>"
70 ." <input type='hidden' name='confirm_titre_mot' value='1' />";
71 set_request('edit','oui');
72 }
73 }
74 return $erreurs;
75 }
76
77 // http://doc.spip.org/@inc_editer_mot_dist
78 function formulaires_editer_mot_traiter_dist($id_mot='new', $id_groupe=0, $retour='', $ajouter_id_article=0, $table='', $table_id=0, $config_fonc='mots_edit_config', $row=array(), $hidden=''){
79 $res = '';
80 set_request('redirect','');
81 $action_editer = charger_fonction("editer_mot",'action');
82 list($id_mot,$err) = $action_editer();
83 if ($err){
84 $res['message_erreur'] = $err;
85 }
86 else {
87 if ($ajouter_id_article){
88 $id_groupe = intval(_request('id_groupe'));
89 ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $ajouter_id_article);
90 }
91 if ($retour)
92 $res['redirect'] = $retour;
93 }
94 return $res;
95 }
96
97
98 // http://doc.spip.org/@ajouter_nouveau_mot
99 function ajouter_nouveau_mot($id_groupe, $table, $table_id, $id_mot, $id)
100 {
101 if (un_seul_mot_dans_groupe($id_groupe)) {
102 sql_delete("spip_mots_$table", "$table_id=$id AND " . sql_in_select("id_mot", "id_mot", "spip_mots", "id_groupe = $id_groupe"));
103 }
104 sql_insertq("spip_mots_$table", array("id_mot" => $id_mot, $table_id => $id));
105 }
106
107 // http://doc.spip.org/@un_seul_mot_dans_groupe
108 function un_seul_mot_dans_groupe($id_groupe)
109 {
110 return sql_countsel('spip_groupes_mots', "id_groupe=$id_groupe AND unseul='oui'");
111 }
112 ?>