source: spip-zone/_plugins_/clil/trunk/base/clil.php @ 108241

Last change on this file since 108241 was 108241, checked in by peetdu@…, 3 years ago

bugfix sur la déclaration du champ code_clil dans la table spip_livres
+ pétouilles

File size: 3.6 KB
Line 
1<?php
2/**
3 * Déclarations relatives à la base de données
4 *
5 * @plugin     Thèmes CLIL
6 * @copyright  2015
7 * @author     Pierre Miquel
8 * @licence    GNU/GPL
9 * @package    SPIP\Clil\Pipelines
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16
17/**
18 * Déclaration des alias de tables et filtres automatiques de champs
19 *
20 * @pipeline declarer_tables_interfaces
21 * @param array $interfaces
22 *     Déclarations d'interface pour le compilateur
23 * @return array
24 *     Déclarations d'interface pour le compilateur
25 */
26function clil_declarer_tables_interfaces($interfaces) {
27
28        $interfaces['table_des_tables']['clil_themes'] = 'clil_themes';
29
30        return $interfaces;
31}
32
33
34/**
35 * Déclaration des objets éditoriaux
36 *
37 * @pipeline declarer_tables_objets_sql
38 * @param array $tables
39 *     Description des tables
40 * @return array
41 *     Description complétée des tables
42 */
43function clil_declarer_tables_objets_sql($tables) {
44
45        $tables['spip_clil_themes'] = array(
46                'type' => 'clil_theme',
47                'principale' => "oui", 
48                'table_objet_surnoms' => array('cliltheme'), // table_objet('clil_theme') => 'clil_themes'
49                'field'=> array(
50                        "id_clil_theme" => "bigint(21) NOT NULL",
51                        "id_parent"             => "int(11) NOT NULL DEFAULT 0",
52                        "id_secteur"    => "int(11) NOT NULL DEFAULT 0",
53                        "libelle"               => "text NOT NULL DEFAULT ''",
54                        "descriptif"    => "text NOT NULL DEFAULT ''",
55                        "tag"                   => "char(3) NOT NULL DEFAULT 'non'",
56                        "maj"                   => "TIMESTAMP"
57                ),
58                'key' => array(
59                        "PRIMARY KEY"   => "id_clil_theme",
60                        "KEY id_parent" => "id_parent"
61                ),
62                'titre' => "Libelle AS titre, '' AS lang",
63                 #'date' => "",
64                'champs_editables'  => array('libelle', 'descriptif', 'tag'),
65                'champs_versionnes' => array(),
66                'rechercher_champs' => array("id_clil_theme" => 4, "libelle" => 6),
67                'tables_jointures'  => array(),
68               
69
70        );
71
72        $tables['spip_livres'] = array(
73                'field' => array(
74                        "code_clil"     => "int(11) NOT NULL DEFAULT '0'"
75                )
76        );
77
78        return $tables;
79}
80
81function clil_declarer_champs_extras($champs = array()) {
82        include_spip('base/abstract_sql');
83        // étape 1 : récupérer les datas
84        $datas = array();
85
86        // Récupérer d'abord les grands thèmes (group by sur id_secteur) pour les optgroups
87        $res1 = sql_select('id_secteur', 'spip_clil_themes', "tag='oui'",'id_secteur','id_clil_theme');
88
89        while ($tab1 = sql_fetch($res1)){
90                $optgroup = $tab1['id_secteur'];
91                $libelle_optgroup = sql_getfetsel('libelle', 'spip_clil_themes', "id_clil_theme=$optgroup");
92
93                // récupérer ensuite les thèmes CLIL sélectionnés
94                $res2 = sql_select('id_clil_theme, id_secteur, libelle', 'spip_clil_themes', "tag='oui' AND id_secteur = $optgroup",'','id_clil_theme');
95                while ($tab2 = sql_fetch($res2)){
96                        $id_clil_theme  = $tab2['id_clil_theme'];
97                        $id_secteur     = $tab2['id_secteur'];
98                        $libelle                = $tab2['libelle'];
99
100                        // un peu de mise en forme
101                        if ($id_clil_theme == $id_secteur) 
102                                function_exists('mb_strtolower') ? $libelle = ucfirst(mb_strtolower($libelle)) : $libelle = ucfirst(strtolower($libelle));
103
104                        $sous_tab[$id_clil_theme] = $libelle;
105                }
106                $datas[$libelle_optgroup] = $sous_tab;
107                unset($sous_tab);
108        }
109
110        // étape 2 : on peut maintenant déclarer le champ extra
111        $champs['spip_livres']['code_clil'] = array(
112                'saisie' => 'selection', //Type du champ (voir plugin Saisies)
113                'options' => array(
114                        'nom' => 'code_clil', 
115                        'label' => _T('clil_theme:label_code_clil'), 
116                        'sql' => "int(11) NOT NULL DEFAULT '0'",
117                        'datas' => $datas,
118                        'restrictions'=>array('voir'     => array('auteur' => '0minirezo'),  // Tout le monde peut voir
119                                                                  'modifier' => array('auteur' => '0minirezo')), // Seuls les webmestres peuvent modifier
120                ),
121        );
122        return $champs;
123}
Note: See TracBrowser for help on using the repository browser.