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

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

Déclaration dans Base inutile

File size: 3.5 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        return $tables;
73}
74
75function clil_declarer_champs_extras($champs = array()) {
76        include_spip('base/abstract_sql');
77        // étape 1 : récupérer les datas
78        $datas = array();
79
80        // Récupérer d'abord les grands thèmes (group by sur id_secteur) pour les optgroups
81        $res1 = sql_select('id_secteur', 'spip_clil_themes', "tag='oui'",'id_secteur','id_clil_theme');
82
83        while ($tab1 = sql_fetch($res1)){
84                $optgroup = $tab1['id_secteur'];
85                $libelle_optgroup = sql_getfetsel('libelle', 'spip_clil_themes', "id_clil_theme=$optgroup");
86
87                // récupérer ensuite les thèmes CLIL sélectionnés
88                $res2 = sql_select('id_clil_theme, id_secteur, libelle', 'spip_clil_themes', "tag='oui' AND id_secteur = $optgroup",'','id_clil_theme');
89                while ($tab2 = sql_fetch($res2)){
90                        $id_clil_theme  = $tab2['id_clil_theme'];
91                        $id_secteur     = $tab2['id_secteur'];
92                        $libelle                = $tab2['libelle'];
93
94                        // un peu de mise en forme
95                        if ($id_clil_theme == $id_secteur) 
96                                function_exists('mb_strtolower') ? $libelle = ucfirst(mb_strtolower($libelle)) : $libelle = ucfirst(strtolower($libelle));
97
98                        $sous_tab[$id_clil_theme] = $libelle;
99                }
100                $datas[$libelle_optgroup] = $sous_tab;
101                unset($sous_tab);
102        }
103
104        // étape 2 : on peut maintenant déclarer le champ extra
105        $champs['spip_livres']['code_clil'] = array(
106                'saisie' => 'selection', //Type du champ (voir plugin Saisies)
107                'options' => array(
108                        'nom' => 'code_clil', 
109                        'label' => _T('clil_theme:label_code_clil'), 
110                        'sql' => "int(11) NOT NULL DEFAULT '0'",
111                        'datas' => $datas,
112                        'restrictions'=>array('voir'     => array('auteur' => '0minirezo'),  // Tout le monde peut voir
113                                                                  'modifier' => array('auteur' => '0minirezo')), // Seuls les webmestres peuvent modifier
114                ),
115        );
116        return $champs;
117}
Note: See TracBrowser for help on using the repository browser.