source: spip-zone/_plugins_/tradrub/210/formulaires/definir_traduction.php @ 35558

Last change on this file since 35558 was 35558, checked in by marcimat@…, 11 years ago

On s'appuie beaucoup plus sur la traduction des articles dans le principe :

  • on ne peut modifier une liaison que s'il n'y en a pas déjà une de déclarée
  • on peut délier des traductions.

Désinstallation :

  • on supprime la colonne id_trad si et seulement si il n'existe aucune traduction entre rubriques.
File size: 2.4 KB
Line 
1<?php
2/**
3 * Plugin tradrub
4 * Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud
5 *
6 */
7
8function formulaires_definir_traduction_charger_dist($objet, $id_objet=0) {
9        // pas d'element, pas de traduction
10        if (!$objet or !($id_objet = intval($id_objet))) {
11                return false;
12        }
13
14        $table = table_objet_sql($objet);
15        $_id_objet = id_table_objet($objet);
16        $id_trad = sql_getfetsel('id_trad', $table, "$_id_objet = ". sql_quote($id_objet));
17       
18        $env = array(
19                'objet' => $objet,
20                'table' => $table,
21                '_id_objet' => $_id_objet,
22                'id_objet' => $id_objet,
23                'id_trad' => $id_trad,
24        );
25       
26        if ($id_trad and ($id_trad != $id_objet)) {
27                $env['ids_trad_selecteur'] = "$objet|$id_trad";
28        }
29       
30        return $env;
31}
32
33
34function formulaires_definir_traduction_traiter_dist($objet, $id_objet=0) {
35
36        if (!$id_objet = intval($id_objet)) {
37                spip_log("Incomprehensible : definir_traduction_traiter n'a pas de id_objet : $id_objet !");
38                return array(
39                        'message_erreur'=>"Identifiant de cette rubrique non transmis dans le traitement !!",
40                        'editable'=>true
41                );
42        }
43        $table = table_objet_sql($objet);
44        $_id_objet = id_table_objet($objet);
45        include_spip('spip_bonux_fonctions');
46        $id_trad = array_shift(picker_selected(_request('ids_trad_selecteur'), $objet));
47        include_spip('inc/modifier');
48        // deux cas deja ici :
49        // id_trad > 0, on lie une rubrique
50        // id_trad = 0 : on delie
51       
52        $id_trad_old = sql_getfetsel('id_trad', $table, "$_id_objet = " . sql_quote($id_objet));
53        if ($id_trad_old != $id_trad) {
54                include_spip('inc/modifier');
55                modifier_contenu($objet, $id_objet, array('invalideur' => "id='$objet/$id_objet'"), array(
56                        'id_trad' => $id_trad
57                ));
58
59                if ($id_trad) {
60                        // indiquer que l'element d'origine possede des traductions...
61                        if (!$id_trad_source = sql_getfetsel('id_trad', $table, 'id_rubrique=' . sql_quote('id_trad') )) {     
62                                modifier_contenu($objet, $id_trad, array('invalideur' => "id='$objet/$id_trad'"), array(
63                                        'id_trad' => $id_trad
64                                ));
65                        }
66                }
67               
68                // si la deliaison ou reliaison fait qu'il ne reste plus que la source
69                // dans le groupe de traduction on lui remet l'id_trad a 0
70                if ($id_trad_old) {
71                        if (1 == $nb_dans_groupe = sql_countsel($table, array('id_trad = ' . sql_quote($id_trad_old)))) {
72                                modifier_contenu($objet, $id_trad_old, array('invalideur' => "id='$objet/$id_trad_old'"), array(
73                                        'id_trad' => 0
74                                ));                             
75                        }
76                }
77               
78        }
79        return array(
80                'message_ok' => _T('tradrub:enregistrement_de_la_traduction_ok'),
81                'editable' => true,
82        );
83}
84
85?>
Note: See TracBrowser for help on using the repository browser.