source: spip-zone/_plugins_/tradrub/trunk/base/tradrub.php @ 65692

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

Gestion des langues comme pour les articles (du moins, en théorie) (paolo)

File size: 2.4 KB
Line 
1<?php
2
3/**
4 * Fonctions de déclarations des tables dans la bdd
5 * et de sélection spécifique de la langue dans la rubrique...
6 *
7 * @package SPIP\Tradrub\Pipelines
8 * @license
9 *     Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 * Ajouter id_trad à la table rubriques
16 *
17 * @pipeline declarer_tables_objets_sql
18 * @param array $tables
19 *     Description des objets editoriaux
20 * @return array
21 *     Description des objets editoriaux
22 */
23function tradrub_declarer_tables_objets_sql($tables){
24        // Extension de la table rubriques
25        $tables['spip_rubriques']['field']['id_trad'] = "bigint(21) DEFAULT '0' NOT NULL";
26        return $tables;
27}
28
29
30/**
31 * Ajout lors de l'insertion d'une traduction de rubrique
32 * de la langue, qui peut ne pas être connue mais héritée
33 * de la rubrique parente à la destination
34 *
35 * @param array $flux    Données du pipeline
36 * @return array         Données du pipeline
37**/
38function tradrub_pre_insertion($flux) {
39        // pour les rubriques
40        if ($flux['args']['table'] == 'spip_rubriques') {
41                // si on crée une traduction
42                if ($id_rubrique_source = _request('lier_trad')) {
43                        $id_parent_trad = $flux['data']['id_parent'];
44
45                        $row = sql_fetsel("lang, id_secteur", "spip_rubriques", "id_rubrique=$id_parent_trad");
46                        $lang_rub = $row['lang'];
47
48
49                        $lang = "";
50                        $choisie = 'non';
51
52                        // La langue a la creation : si les liens de traduction sont autorises
53                        // dans les rubriques, on essaie avec la langue de l'auteur,
54                        // ou a defaut celle de la rubrique
55                        // Sinon c'est la langue de la rubrique qui est choisie + heritee
56                        if (in_array('spip_rubriques',explode(',',$GLOBALS['meta']['multi_objets']))) {
57                                lang_select($GLOBALS['visiteur_session']['lang']);
58                                if (in_array($GLOBALS['spip_lang'],
59                                explode(',', $GLOBALS['meta']['langues_multilingue']))) {
60                                        $lang = $GLOBALS['spip_lang'];
61                                        $choisie = 'oui';
62                                }
63                        }
64
65                        if (!$lang) {
66                                $choisie = 'non';
67                                $lang = $lang_rub ? $lang_rub : $GLOBALS['meta']['langue_site'];
68                        }
69
70                        $flux['data']['lang'] = $lang;
71                        $flux['data']['langue_choisie'] = $choisie;
72
73                        // ici on ignore changer_lang qui est poste en cas de trad,
74                        // car l'heuristique du choix de la langue est pris en charge ici
75                        // en fonction de la config du site et de la rubrique choisie
76                        set_request("changer_lang");
77                }
78
79        }
80
81        return $flux;
82}
83
84?>
Note: See TracBrowser for help on using the repository browser.