[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / tradrub / tradrub_pipelines.php
1 <?php
2 /**
3 * Plugin tradrub
4 * Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud
5 *
6 */
7
8 /**
9 * ajouter la liste des traductions et le formulaire pour definir une traduction
10 *
11 * @param array $flux
12 * @return array
13 */
14 function tradrub_affiche_milieu($flux) {
15 if (($type = $flux['args']['exec'])=='naviguer'){
16 $id = $flux['args']['id_rubrique'];
17 // on affiche uniquement si la rubrique est une traduction
18 // OU si on a le droit de la modifier (pour en declarer une)
19 $trad = recuperer_fond('prive/traduire/rubrique', array('id_rubrique' => $id), array('ajax'=>true));
20 $flux['data'] .= $trad;
21 }
22 return $flux;
23 }
24
25 /**
26 * enregistrer les liens entre traductions au moment d'une creation
27 * de rubrique traduite
28 *
29 * @param array $flux
30 * @return array
31 */
32 function tradrub_post_edition($flux) {
33 if ((($table = $flux['args']['table']) == 'spip_rubriques')
34 and ($id_objet = $flux['args']['id_objet'])
35 and ($flux['args']['action'] == "modifier")
36 and ($id_trad = _request('lier_trad'))) {
37 // seulement si id_trad n'est pas deja defini (nouvelle rubrique donc absolument)
38 $existant = sql_getfetsel('id_trad', 'spip_rubriques', 'id_rubrique='. sql_quote($id_objet));
39 if (!$existant) {
40 rubrique_referente($id_objet, array('lier_trad' => $id_trad));
41 }
42 }
43 return $flux;
44 }
45
46
47 // ~= ecrire/action/editer_article
48 // Poser un lien de traduction vers un rubrique de reference
49 function rubrique_referente($id_rubrique, $c) {
50
51 if (!$c = intval($c['lier_trad'])) return;
52
53 // selectionner la rubrique cible, qui doit etre different de nous-meme,
54 // et quitter s'il n'existe pas
55 $id_lier = sql_getfetsel('id_trad', 'spip_rubriques', array(
56 "id_rubrique = " . sql_quote($c),
57 "id_rubrique <>" . sql_quote($id_rubrique))
58 );
59
60 if ($id_lier === NULL)
61 {
62 spip_log("echec lien de trad vers rubrique incorrect ($lier_trad)");
63 return '&trad_err=1';
64 }
65
66 // $id_lier est le numero du groupe de traduction
67 // Si la rubrique visee n'est pas deja traduite, son identifiant devient
68 // le nouvel id_trad de ce nouveau groupe et on l'affecte aux deux
69 // articles
70 if ($id_lier == 0) {
71 sql_updateq("spip_rubriques", array("id_trad" => $c), sql_in("id_rubrique", array($c, $id_rubrique)));
72 }
73 // sinon ajouter notre rubrique dans le groupe
74 else {
75 sql_updateq("spip_rubriques", array("id_trad" => $id_lier), "id_rubrique = ". sql_quote($id_rubrique));
76 }
77
78 return ''; // pas d'erreur
79 }
80
81 ?>