[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / prive / formulaires / traduire.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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 /**
19 * Charger les donnes de #FORMULAIRE_TRADUIRE
20 *
21 * @param string $objet
22 * @param int $id_objet
23 * @param string $retour
24 * url de retour
25 * @param bool $traduire
26 * permet de desactiver la gestion de traduction sur un objet ayant id_trad
27 * @return array|bool
28 */
29 function formulaires_traduire_charger_dist($objet, $id_objet, $retour='', $traduire = true){
30 if (!intval($id_objet))
31 return false;
32 $valeurs = formulaires_editer_objet_charger($objet,$id_objet,null,0,$retour,'');
33 // verifier que l'objet indique possede bien des champs id_trad et lang
34 // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
35 if (!isset($valeurs['langue']))
36 return false;
37
38 $valeurs['editable'] = autoriser('changerlangue',$objet,$id_objet);
39 $valeurs['_langue'] = '';
40 $langue_parent = '';
41 $id_parent = '';
42 if (isset($valeurs['id_rubrique']))
43 $id_parent = $valeurs['id_rubrique'];
44 if (isset($valeurs['id_parent']))
45 $id_parent = $valeurs['id_parent'];
46 if ($id_parent)
47 $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=".intval($id_parent));
48
49 if (!$langue_parent)
50 $langue_parent = $GLOBALS['meta']['langue_site'];
51 if ($valeurs['editable']
52 AND in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']['multi_objets']))){
53 $valeurs['_langue'] = $valeurs['langue'];
54 }
55 $valeurs['langue_parent'] = $langue_parent;
56
57 $valeurs['_objet'] = $objet;
58 $valeurs['_id_objet'] = $id_objet;
59 $valeurs['changer_lang'] = '';
60
61
62 $valeurs['_traduire'] = '';
63 if (isset($valeurs['id_trad'])) {
64 $valeurs['_traduire'] = ($traduire?' ':'');
65 $valeurs['_vue_traductions'] = "prive/objets/liste/" . (trouver_fond($f=table_objet($objet)."-trad","prive/objets/liste")?$f:"objets-trad");
66 // pour afficher la liste des trad sur la base de l'id_trad en base
67 // independamment d'une saisie en cours sur id_trad
68 $valeurs['_lister_id_trad'] = $valeurs['id_trad'];
69 $valeurs['_id_parent'] = $id_parent;
70 }
71
72 $valeurs['_saisie_en_cours'] = (!_request('annuler') AND (_request('changer_lang')!==null OR _request('changer_id_trad')!==null));
73 $valeurs['_pipeline'] = array('traduire',array('type'=>$objet,'id'=>$id_objet));
74
75 return $valeurs;
76 }
77
78 /**
79 * Verifier les saisies des valeurs du #FORMULAIRE_TRADUIRE
80 *
81 * @param string $objet
82 * @param int $id_objet
83 * @param string $retour
84 * @param bool $traduire
85 * @return array
86 */
87 function formulaires_traduire_verifier_dist($objet, $id_objet, $retour='', $traduire = true){
88 $erreurs = array();
89
90 if (null !== _request('changer_lang')) {
91 $erreurs = formulaires_editer_objet_verifier($objet,$id_objet,array('changer_lang'));
92 }
93
94 // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
95 // et que ca reference bien un objet existant
96 if ($id_trad = _request('id_trad')){
97 $table_objet_sql = table_objet_sql($objet);
98 $_id_table_objet = id_table_objet($objet);
99 if (sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet)))
100 // ne devrait jamais arriver sauf concurence de saisie
101 $erreurs['id_trad'] = _L('Une traduction est deja referencee');
102 elseif (!sql_getfetsel($_id_table_objet,$table_objet_sql,"$_id_table_objet=".intval($id_trad)))
103 $erreurs['id_trad'] = _L('Indiquez un contenu existant');
104 }
105 return $erreurs;
106 }
107
108
109 /**
110 * Enregistrer en base les saisies du #FORMULAIRE_TRADUIRE
111 * @param $objet
112 * @param $id_objet
113 * @param string $retour
114 * @return array
115 */
116 function formulaires_traduire_traiter_dist($objet, $id_objet, $retour='', $traduire = true){
117 $res = array();
118 if (!_request('annuler') AND autoriser('changerlangue',$objet,$id_objet)) {
119 // action/editer_xxx doit traiter la modif de changer_lang
120 $res = formulaires_editer_objet_traiter($objet,$id_objet,0,0,$retour);
121
122 if ($id_trad=_request('id_trad') OR _request('supprimer_trad')){
123 $referencer_traduction = charger_fonction('referencer_traduction','action');
124 $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
125 }
126 elseif ($new_id_trad = _request('changer_reference_trad')
127 AND $new_id_trad = array_keys($new_id_trad)
128 AND $new_id_trad = reset($new_id_trad)){
129 $table_objet_sql = table_objet_sql($objet);
130 $_id_table_objet = id_table_objet($objet);
131 if ($id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet))){
132 $referencer_traduction = charger_fonction('referencer_traduction','action');
133 $referencer_traduction($objet, $id_trad, $new_id_trad);
134 }
135 }
136 }
137 $res['editable'] = true;
138 if (!$res['message_erreur'])
139 set_request('annuler','annuler'); // provoquer la fermeture du forumlaire
140 return $res;
141 }
142
143 ?>